2

我有一个使用browserify + browserify-middleware + jamify的jade模板创建javascript文件

这就是节点中服务器端的全部内容,这是使其创建生成的 javascript 文件所需的唯一内容:

app.use('/templates', require('browserify-middleware')('./public-includes'),
{
    grep: /\.jade$/,
    transform: ['jadeify']
}));

然后在网络浏览器中,我从/templates/template.jade编辑:我在此处发布)获得了一些 javascript 代码,我可以看到它在 module.exports 上设置了各种功能(就像节点一样)。但是我如何从客户端使用它?我试过require.js这样var template = require('/templates/template.jade', function(template){});,它返回未定义。

我也应该在客户端使用 browserify 吗?我见过的所有例子都在谈论捆绑和东西,但我不知道它是否适用,我在一个目录上运行它并且没有在任何地方提供捆绑名称。

4

1 回答 1

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 不是很有经验,所以你的里程可能会因这种方法而异。我真的建议对所有事情都使用 browserify。

于 2014-02-08T11:45:06.427 回答