我有一个使用browserify + browserify-middleware + jadeify
的玉石模板创建的javascript文件这一切都在节点的服务器端,这是创建生成的javascript文件所需的唯一内容:
app.use('/templates', require('browserify-middleware')('./public-includes'),
{
grep: /\.jade$/,
transform: ['jadeify']
}));
然后在网络浏览器中,我从/templates/template.jade
获得了一些javascript代码,(编辑:我发布了它here)我可以看到它设置了各种各样的功能module.exports(就像节点一样)。但是我如何从客户端使用它?我尝试使用require.js
这样var template = require('/templates/template.jade', function(template){});
,返回未定义。
我是否应该在客户端使用browserify?我见过的所有例子都谈论了bundle和stuff,但我不知道它是否适用,我在一个目录上运行它并且不在任何地方提供一个包名。
答案 0 :(得分:2)
理想情况下,到处使用browserify。要做到这一点,只需要一个client.js
文件:
var template = require('./templates/template.jade');
// rest of code here
然后在服务器上执行:
app.get('/client.js', require('browserify-middleware')('./client.js',
{
transform: ['jadeify']
}));
在您的HTML中,您只需执行以下操作:
<script src="/client.js"></script>
另一种选择,如果您想使用requirejs或仅使用独立的全局,您可以这样做:
app.get('/templates', require('browserify-middleware')('./public-includes'),
{
grep: /\.jade$/,
transform: ['jadeify'],
standalone: 'template'
}));
然后,您应该在客户端上找到全局template
变量,或者它应该与requirejs一起使用,这样您就可以执行以下操作:
require('/templates/template.jade', function (template) {
//use template here
});
虽然我对requirejs不是很有经验,所以你的milage可能因这种方法而异。我真的建议使用browserify来处理所有事情。