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

Javascript 使用Jade模板(Jade-lang.com)客户端,javascript,ruby-on-rails,node.js,template-engine,pug,Javascript,Ruby On Rails,Node.js,Template Engine,Pug,我想在客户端使用Jade模板。最好使用Rails 3.1资产管道生成。我真的不知道怎么做 有谁偶然发现了同样的问题并找到了一个很好的解决方案?任何想法都非常感谢 p.S:也许现在更好。 粗制滥造 也许你可以用 用于节点的浏览器端require() 模块和npm包 只需将一两个javascript文件指向 browserify和它将步行到AST 以递归方式读取所有require()。 由此产生的bundle拥有一切 你需要,包括停车 您可能已安装的库 使用npm 浏览器 =>根据这个基准测

我想在客户端使用Jade模板。最好使用Rails 3.1资产管道生成。我真的不知道怎么做

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


p.S:也许现在更好。


粗制滥造 也许你可以用

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

只需将一两个javascript文件指向 browserify和它将步行到AST 以递归方式读取所有require()。 由此产生的bundle拥有一切 你需要,包括停车 您可能已安装的库 使用npm

浏览器 =>根据这个基准测试,性能没有那么好=>。但是根据TJ的说法,它本来不应该在浏览器中使用,而是应该在node.js中使用。在这种情况下,它将是相当快的。您可以在浏览器中使用许多替代品。

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

我编写了一个名为gem的程序,用于在资产管道中执行此操作。默认情况下,它的工作方式与EJS在链轮上的工作方式完全相同——它将Jade模板向下渲染为函数,这样它们就可以被称为客户端。我不确定这是否是一个很好的解决方案,但它对我的需求来说效果不错。

结帐。它是一个类似翡翠的HTML模板引擎,专为客户端(和服务器端)使用而设计。你们可能还喜欢其他一些功能


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

Jade现在默认支持为客户端编译;使用
-c--client
选项。请参阅。

我刚刚创建了一个库,用于在客户端html中提供jade。它就像一样简单。查看:

此功能现在在Jade中可用。

从他们的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);
您应该将编译好的javascript函数传递给客户端,例如将函数(示例中为fn)写入.js文件,然后将.js文件包含在带有脚本标记的html文件中


另一个选项是使用,它可以将jade编译成一个.js文件。

这是一个使用
gulp jade
browserify
的简单版本

var jade = require('gulp-jade'),
    replace = require('gulp-replace');

gulp.task('jade-client', function() {
    gulp.src('./views/**/*.jade')
        .pipe(jade({
            client: true
        }))
        .pipe(replace(/function template/g, 'var jade = require("gulp-jade/node_modules/jade/lib/runtime");\n\nmodule.exports = function'))
        .pipe(gulp.dest('./client/templates'));
});
然后在我的客户端JS文件中

var template = require('./path_to_compiled_template_file');
var renderedTemplateHtml = template({ aLocal: 'blah blah'});

因此,您只需向客户发送所需的特定模板,browserify确保您只有一份运行时副本。

这是一个很好的建议,上帝保佑,它可以与普通Jade一起使用,但这样做会很好。此外,它是一个更广泛的解决方案,也适用于其他node.js模块!查看一下,您不知道如何在服务器上编译jade文件,然后在浏览器上调用生成的函数。你能详细说明一下吗?