小编Wol*_*mec的帖子

用于backbone.js web应用程序的良好,轻量级的非mvc php框架

我正在开发一个带有requirejs,backbone.js,underscore.js和jquery的JS Web应用程序.
在工作中,我的后端是一个jboss应用程序服务器.
我的视图是模板(静态html文件),由jboss的tomcat部分提供,并通过underscore.js模板集成到前端.
所以我不需要在服务器端生成任何VIEW.
除了tomcat提供的上述静态文件(html和js文件)之外,我需要jboss后端仅用于数据检索(会话bean通过jpa从数据库获取数据并将其作为json返回).
现在我还想在业余时间在家里启动一个Web应用程序.
在前端区域,我将使用相同的库堆栈,但在后端我想使用PHP.
在后端的PHP很便宜,你可以很容易地找到一个好的,低价的php + mysql提供商.
在后端我搜索一个通常类似于我的工作环境的解决方案:我只想让php给我模型部分,只给出数据库中的数据.所有其他部分(视图模板,js文件)都来自apache静态文件服务.
我想要一个轻量级的PHP框架来帮助我实现这个目标(没有MVC).我已经花了很多时间寻找解决方案,但并没有真正成功.
我一直在使用zend框架很长一段时间:
我知道这个框架可以以非mvc的方式使用.我写了一些只以这种方式使用它的例子.但我对zend不满意.这对我而言太大而且缓慢.

我的问题是具有php后端的backbone.js Web应用程序开发人员:

您使用什么后端解决方案从服务器获取模型和集合.你有哪些经历?

更新:
谢谢你的回答.
我现在发现了一个名为"slimphp"的有前途的微框架项目.

php backbone.js

6
推荐指数
2
解决办法
3318
查看次数

jquery空函数和事件处理程序

在"空"函数(http://api.jquery.com/empty/)的jquery文档中,有以下语句:

"To avoid memory leaks, jQuery removes other constructs such as data and event handlers
from the child elements before removing the elements themselves."
Run Code Online (Sandbox Code Playgroud)

文字说:"...... jQuery从!CHILD!元素中删除事件处理程序......".但我希望事件处理程序也从div标签中删除($("#mydiv").empty).我知道有"删除"功能,但我的意图是不删除div标签.完成这项工作的最佳方法是什么?

另一件事是:
当他们说"删除事件处理程序"时.他们只删除用"bind"制作的构造,还是删除用"delegate"制作的构造?

非常感谢提前

jquery

6
推荐指数
1
解决办法
4312
查看次数

css,浮动替代品

在我的网络应用程序中,我有一个工具栏,它是一个div:

div有3个跨度.3个跨度的内容稍后填充.

并且每个跨度的大小每次都不同.

<div>
    <span id="ab1" style="display: inline-block;"></span>
    <span id="ab2" style="display: inline-block;"></span>
    <span id="ab3" style="display: inline-block;"></span>
</div>
Run Code Online (Sandbox Code Playgroud)

现在,我想,跨度"ab1"应该放在左侧,"ab2"和"ab3"放在div的右侧.

这可能没有向右/向左浮动吗?

html css

6
推荐指数
3
解决办法
3万
查看次数

Internet Explorer 11中的文本输入填充不能按预期方式工作

在我们的Web应用程序中,我们有输入字段,由css设置样式.

在此输入图像描述

正如您在屏幕截图中看到的那样,样式在Firefox中起作用(从Firebug获取的信息数据),它也适用于Google Chrome.

但是在IE 11中,相同的字段存在填充问题.单词"test"不是垂直居中的.

到目前为止,我尝试过没有成功:

box-sizing: border-box
extra line-height attribute
overflow-visible attribute
vertical-align
Run Code Online (Sandbox Code Playgroud)

非常感谢提前

编辑:

我包含了一个最小的CSS重置(https://perishablepress.com/a-killer-collection-of-global-css-reset-styles/),但它没有改变.

我还包括ie开发人员工具的截图.您可以看到对输入字段生效的所有样式定义.我看到没有冲突的其他风格定义.

编辑:

我再次尝试使用"line-height"属性.它对我不起作用.这个问题:

输入字段必须具有34个像素(22个输入字段(行高)+ 5x2边距+ 1x2边框).这适用于FF和谷歌浏览器.如果我明确地将行高设置为22px,它不会改变IE中的任何内容.如果我将行高设置为其他值(26px),它会将IE更改为更好,但它也会将其他浏览器(26 + 10 + 2)中输入字段的高度更改为38px,因此我无法使用因为输入高度不应超过34像素.

在此输入图像描述

css internet-explorer

6
推荐指数
1
解决办法
8411
查看次数

道场和模板解决方案

通常我在jQuery世界,我使用requirejs,backbone.js和jquery开发一个wep应用程序.
为了拓宽视野,我也开始使用Dojo.
在我开始使用Dojo之前,我在几个关于jQuery的博客中读到的语句类似于:"如果你正在制作一个带有一些JS效果的普通网站,你可以使用jQuery,但是对于web应用程序的东西你应该使用Dojo".
所以,正因为如此,当我开始使用Dojo(1.7)时,我渴望了解它的Web应用程序开发解决方案.
让我感到惊讶的第一件事是我没有为mvc控制器组件找到任何基类.在backbone.js中你有一个视图(许多人说backbone.js视图是一个控制器),这有很大帮助.
现在,在我的mvc控制器组件中,我想呈现视图.我使用amd文本插件"加载"模板.对于简单的模板 - 我发现 - 你可以使用dojo.string.substitute.但是,如果你想做一些更复杂的事情,你就不能使用它.
我知道Rebecca Murphey,一位着名的javascript演讲者,当她开始在这个生态系统中开发时,将Mustache.js拉入Dojo.
但是当Dojo Web应用程序程序员必须使用动态行数渲染列表并且他们想通过js模板实现这一点时,Dojo本机解决方案会使用什么?

以下划线模板.如果要执行此操作,请在模板中编写以下内容:

 <div><%= lang_test %></div> <!-- static things -->  
 <table>
 <% _.each(list, function(listitem){ %>
 <tr>
 <td><%= listitem.get('attr1') %></td>
 <td><%= listitem.get('attr2') %></td>
 </tr>   
 <% }); %>
 </table>
Run Code Online (Sandbox Code Playgroud)

非常感谢
沃尔夫冈

更新:
谢谢你,mkriheli,你的回答.我也偶然发现了dojox.dtl!
我想我会用这个.
您提到了处理这种模板小部件的首选方法.这是非常有趣的事情,WIDGETS作为页面控制器与模板!

1)我的第一个javascript web 2.0 MVC页面控制器是一个很大的自定义jQuery UI小部件.我听说jQuery UI团队正在计划将模板集成到他们的小部件中.在使用backbone.js迁移到jquery后,我转身离开了它.

2)据我所知和理解,来自JavascriptMVC的Justin Meyer采用了jQuery UI小部件工厂部分(jQuery UI小部件的基础部分),并在其框架中将其用作页面控制器.

3)Mark Wubben在Dojo Conf谈论模板:他说:

这导致了一种用于编写Dojo小部件的新的有趣方法.它们可以变得更像控制器:处理DOM事件,实现应用程序逻辑和更新模型.视图将自动反映更改.

dojo templates

5
推荐指数
1
解决办法
8209
查看次数

带有默认图像/照片查看器的Windows 7上的ShellExecuteEx

我们有一个在Windows XP,Windows Vista,Windows 7等上运行的桌面应用程序(它用cobol编写,但我认为在这种情况下它不相关).

在我们的源代码我们称之为ShellExecuteExopen.
在此之后 - 为了等待被叫程序的终止 - 我们打电话WaitForSingleObjectinfinite.

它没有问题,只在带有图像的Windows-7机器上,我们遇到问题的默认图像查看器.

如果ShellExecuteEx在那里调用jpg或tif文件并且机器只有默认的Windows图像/照片查看器,则会发生错误.WaitForSingeObject返回WAIT_FAILEDGetLastError()说:INVALID_HANDLE.

当有另一个图像查看器时,例如,Picasa Photo Viewer或Evince windows版本或JPEGView,这不会在Windows 7上发生.

我不知道Windows 7和Windows 7上的默认图像查看器出了什么问题ShellExecuteEx.ShellExecuteEx不会返回错误代码!

非常感谢提前.

更新:感谢您的回答.

@David Heffernan:正如你所说,在它不起作用的情况下,ShellExecuteEx的返回代码(hInstApp)为42(ok!),hProcess为NULL!(唯一启动的新进程是dllhost.exe.)

但是,我在另一台Windows 7机器上测试了整个东西.在这种情况下,我执行了以下操作:
- 在此计算机上,Picasa是默认查看器.
- 我切换回默认设置(Windows Photo Viewer).
- 有效!
- 然后我没有关闭照片查看器并在我们的应用程序中再次按"显示". - 即使Windows照片查看器已经运行,它也可以工作(弹出查看器的新实例)!

winapi windows-7

4
推荐指数
1
解决办法
995
查看次数

jquery源代码,带换行符的classname?

今天我看了jQuery函数removeClass的源代码:
有以下几行:

className = (" " + elem.className + " ").replace( rclass, " " );
Run Code Online (Sandbox Code Playgroud)

rclass:

rclass = /[\n\t\r]/g,
Run Code Online (Sandbox Code Playgroud)

在David Flanagan,第6版,第438页的"JavaScript The Definitve Guide"一书中,有以下句子:

...,因此HTML类属性可用于使用名称className的JavaScript代码....并且class属性包含以空格分隔的类名列表.

为什么jQuery编码器假设类名也可以用制表符和换行符分隔?

javascript jquery

3
推荐指数
1
解决办法
67
查看次数

backbone.js model.clear没有默认值

当我创建一个新的backbone.js模型时,"defaults"中的属性不会被忽略,它们将成为我的模型的初始值.
当我在模型上调用"清除"时,为什么忽略它们.
它背后有什么理由吗?
为什么我需要一个状态,当我有"默认值"时,我的模型的所有属性都是0或""(空格)?
有人可以给我一个真实世界的例子吗?

例如,在我的一个模型中有一个名为"status"的属性.初始值为"x",但用户可将其更改为"b"或"u".""(空格)无效值.因此在模型中,我有

 defaults: {
   "status":  "x"
 }
Run Code Online (Sandbox Code Playgroud)

在详细信息组件中,用户可以编辑模型的值,他有一个名为"erase"的按钮.当他这样做时,模型得到初始状态.在这种情况下,我永远不需要一个函数来将所有属性设置为零或空格.

如果模型具有"默认值",则backbone.js作者可以很容易地检查"clear"方法,如果是,则删除所有值,然后获取默认值.

非常感谢
沃尔夫冈

backbone.js

3
推荐指数
1
解决办法
3124
查看次数

jQuery推迟了

我是jquery deferreds的新手.这里有一个简单的例子.

任何人都可以告诉我为什么在完成其他功能之前触发完成功能("现在是我的时间")?

这个例子中的人也创建了一个延迟对象并返回一个promise,
我也是如此.我如何更改我的小例子才能在6秒后(超时后)触发完成函数?

非常感谢
沃尔夫冈

jquery

2
推荐指数
1
解决办法
143
查看次数

php存储数组在数组中的引用

我有以下问题.有一些PHP行.

在var_dump中$testArrayA,"def"条目test2不存在,因为它是在添加后$testArrayB添加的$testArrayA.

在我看来,在我的情况下,这$testArrayB不是通过引用存储的$testArrayA.我如何根据参考存储它,我需要做什么才能在var_dump中输入"def"条目?

非常感谢提前

$testArrayA = [];
$testArrayB = [];
$testArrayB["ghi"] = "test1";
$testArrayA["abc"] = $testArrayB;
$testArrayB["def"] = "test2";
Run Code Online (Sandbox Code Playgroud)

var_dump:

array(1) {
  ["abc"]=>
    array(1) {
       ["ghi"]=>
       string(5) "test1"
      }
}
Run Code Online (Sandbox Code Playgroud)

php

2
推荐指数
2
解决办法
5546
查看次数