nodejs或envjs – dynamicjquery tmpl

我目前的任务是为特定的DOM生成和提供集中的模板 – 对于这个例子,我们只是说它是一个表单。

基本上我想采取每个表单元素(从标签,input,到div包装),并将其保存为单独的模板 。

从那里我们将有一个用户界面,我们的生产者可以拼凑这些forms。 一旦他们决定如何将他们的表单布局(DOM顺序和结构对于这个项目来说实际上是至关重要的,它不能成为一个纯CSS的解决scheme),我们平台上的一个脚本会保存一个JSON对象,基于模板名称的DOM结构,以后我可以在页面加载时参考。

我想这里的一个理想的解决scheme是发送该JSON对象到节点服务器或使用envjs'build立'这个dom,然后将其分配给一个PHPvariables包含在CodeIgniter视图,因此它可以索引由谷歌。

我知道JQuery本身与envjs工作,我知道有一个节点的JQuery插件 ,但唉,这是我的第一个服务器端JS项目,它恰好是相当重要的。 我可以通过命令行获得envjs在本地机器上的工作,但完成一个简单的任务需要10-30秒。 如果envjs是要走的路,我怎样才能保持它在后台运行,并有脚本引用它? PHPcurl到Tomcat上的envjs servlet也许?

一个警告是我的本地开发人员是WAMP(IT不会让我们有本地unix机器),但我们的testing和生产环境都是LAMP。 我确实有一个我可以testing的个人LAMP服务器,如果这是绝对唯一的方法,但是在个人服务器上编码公司的东西可能会让我受到一些热。

不幸的是,我没有时间研究所有的可能性,并尝试/失败,正如我平时所用的新技术。 想法,指导,代码示例 – 任何可以帮助我决定如何解决这个问题将不胜感激。

简短的回答:使用节点。 现在使用它。 实际上,这是一个链接到最新的本地Windows .exe,它是独立的,没有依赖关系: http : //nodejs.org/dist/v0.5.4/node.exe

长的回答:env.js是/是一个很酷的项目。 它模拟js中的js环境。 它可以运行在其他环境和东西。 无论如何,这并不重要。

Node.js是一个运行在V8之上的js主机环境。 V8是目前为止最快的js环境,也是Chrome的强大之处。Node本身是针对本地系统环境的,它是一个常见的浏览器:一个混合在一起的API的强大组合,以便于开发者的使用和function的广泛性组。

在浏览器中,您可以通过DOM扩展来控制video,audio,用户input等。 使用服务器上的节点(或者只是您自己的计算机,它具有超出常规服务器使用情况的应用程序数量),您可以为所有types的IO提供令人难以置信的支持:http / udp服务器和客户端,可以为您完成所有样板工作, / O,用于处理所述networking和文件I / O的pipe理数据stream,用于产生并与subprocess或fork进程通信的访问,以及直接访问V8的编译器以编译和保存/运行javascript字节码。

至于DOM,至less有一个完整的DOM(DOM)节点和多个部分的实现。 至less我知道的YUI,jQuery和MooTools可以运行在一个DOM库顶部的Node上,以便像在浏览器中一样从任何源代码构buildDOM,然后将其序列化为html或其他。

https://github.com/tmpvar/jsdom是在节点(或我相信任何JavaScript环境)上运行的DOM实现。

https://github.com/tmpvar/jsdom/blob/master/example/browser/browser.js是一个模拟浏览器的例子:

var sys = require('sys'); var dom = require('../../lib/jsdom/level2/html').dom.level2.html; var browser = require('../../lib/jsdom/browser/index').windowAugmentation(dom); var document = browser.document; var window = browser.window; var el = document.createElement('div'); el.id = 'foo'; el.innerHTML = '<em>This is a test</em> This <strong class="odd">is another</strong> test '; document.body.appendChild(el); sys.puts(document.outerHTML); 

一些其他库可能会启发你的决定

只是值得考虑的几点。

EnvjsNodejs之间的差异是巨大的。 Envjs是Rhino默认实现的模拟浏览器环境。 需要注意的是,一个人(和开发人员)可以使用Nodej来实现Envjs。 另一方面,Nodejs是一个适用于Googles V8引擎的Javascript环境,function非常强大,并且有很多模块可用

从你所说的话,这听起来像你正在寻找build立一个基于用户交互的客户端的jQuery模板,结果就像这样。

 <script id="dynamicTemplate" type="text/x-jquery-tmpl"> {{tmpl "smallTemplate1"}} <tr><td>key: ${value}</td></tr> </script> 

然后你可以用一些JSON的方式序列化,并发送到服务器重现(你显然已经完成)。 在服务器端,您正在寻找关于如何执行反序列化模板的指导。

在这个特别的一点,我会强烈推荐NodeJS节点jqtpl模块这是jQuerys模板引擎的端口到nodejs,其中有相当大的以下https://github.com/kof/node-jqtpl

另外,如果你有能力; 我非常希望看到如何安全地将模板序列化到JSON中,因为我认为这是最困难的部分。

Interesting Posts