使用Jade模板(jade-lang.com)客户端

san*_*rom 23 javascript template-engine ruby-on-rails node.js pug

我想在客户端使用Jade模板.最好使用Rails 3.1资产管道生成.我无法弄清楚如何做到这一点.

任何人偶然发现了同样的问题并找到了一个很好的解决方案?任何想法都非常感激.

sub*_*ack 31

如果你使用browserify,你可以使用这个方便的玉器中间件:jadeify.然后,您可以jadeify("foo.jade", { x : 4, y : 5 })在将视图目录指向中间件后调用浏览器端,然后返回一个jquery句柄.


Alf*_*red 7

PS:可能现在Substack的答案更好.


browserify

也许你可以使用https://github.com/substack/node-browserify

浏览器端require()用于节点模块和npm包

只需在browserify上指向一个或两个javascript文件,它将遍历AST以递归方式读取所有require().生成的软件包包含您需要的所有内容,包括使用npm提取可能已安装的库!

浏览器

http://jsperf.com/dom-vs-innerhtml-based-templating/53 =>根据这个基准测试表现并不是那么好=> http://gist.github.com/raw/550723/12d176698628e30a1df398c7ac7aea93924e1294/ jade.js.但根据TJ,它从来不应该在浏览器中使用,而是在node.js中使用.在那种情况下,它会非常快.您可以在浏览器中使用许多替代方案.

  • 你是如何使用普通翡翠的?:) (4认同)

BMi*_*ner 7

结账刀片.它是一个类似Jade的HTML模板引擎,专为客户端(和服务器端)使用而设计.您也可以使用其他一些功能.

编辑:但是,仅适用于Node.js服务器.目前没有Ruby实现.


sha*_*hak 5

此功能现在可在Jade中使用. http://jade-lang.com/api/

从他们的API文档:

var jade = require('jade');

// Compile jade file to a function
var fn = jade.compileClient('string of jade', options);

// Later in client site, render the function to HTML
var html = fn(locals);
Run Code Online (Sandbox Code Playgroud)

您应该将已编译的javascript函数传递给客户端,例如将函数(示例中的fn)写入.js文件,然后将.js文件包含在带脚本标记的html文件中.

另一种选择是使用templatizer,它将jade编译为.js文件.