我正在开发一个带有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"的有前途的微框架项目.
在"空"函数(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"制作的构造?
非常感谢提前
在我的网络应用程序中,我有一个工具栏,它是一个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的右侧.
这可能没有向右/向左浮动吗?
在我们的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像素.

通常我在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事件,实现应用程序逻辑和更新模型.视图将自动反映更改.
我们有一个在Windows XP,Windows Vista,Windows 7等上运行的桌面应用程序(它用cobol编写,但我认为在这种情况下它不相关).
在我们的源代码我们称之为ShellExecuteEx有open.
在此之后 - 为了等待被叫程序的终止 - 我们打电话WaitForSingleObject给infinite.
它没有问题,只在带有图像的Windows-7机器上,我们遇到问题的默认图像查看器.
如果ShellExecuteEx在那里调用jpg或tif文件并且机器只有默认的Windows图像/照片查看器,则会发生错误.WaitForSingeObject返回WAIT_FAILED并GetLastError()说: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照片查看器已经运行,它也可以工作(弹出查看器的新实例)!
今天我看了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编码器假设类名也可以用制表符和换行符分隔?
当我创建一个新的backbone.js模型时,"defaults"中的属性不会被忽略,它们将成为我的模型的初始值.
当我在模型上调用"清除"时,为什么忽略它们.
它背后有什么理由吗?
为什么我需要一个状态,当我有"默认值"时,我的模型的所有属性都是0或""(空格)?
有人可以给我一个真实世界的例子吗?
例如,在我的一个模型中有一个名为"status"的属性.初始值为"x",但用户可将其更改为"b"或"u".""(空格)无效值.因此在模型中,我有
defaults: {
"status": "x"
}
Run Code Online (Sandbox Code Playgroud)
在详细信息组件中,用户可以编辑模型的值,他有一个名为"erase"的按钮.当他这样做时,模型得到初始状态.在这种情况下,我永远不需要一个函数来将所有属性设置为零或空格.
如果模型具有"默认值",则backbone.js作者可以很容易地检查"clear"方法,如果是,则删除所有值,然后获取默认值.
非常感谢
沃尔夫冈
我有以下问题.有一些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) jquery ×3
backbone.js ×2
css ×2
php ×2
dojo ×1
html ×1
javascript ×1
templates ×1
winapi ×1
windows-7 ×1