0

好的,所以我要做的是在使用 express 时手动处理我的资产。我的意思是我不必在每个页面上都拥有每个样式表/javascript 文件。所以我希望能够在每条路由中指定是否要使用另一个 javascript 文件。前任:

app.get('/testing',function(req,res,next){
      assets.addJS('my-javascript-file');
      res.render('testing');
});

因此,现在当模板开始渲染时,我想要所有已添加到局部变量中的 javascript 文件。我不想在每次调用 render 时都传递它们,因为我想在其他地方添加 javascript,并且可能不一定需要向模板发送任何内容,这会导致我不会意外传递它。我想要实现的另一件事是缓存。我知道默认情况下,一旦拥有资产,它就会发回未修改的 304,但我什至不希望它发出该请求,所以我希望在文件输出时对文件执行查询字符串,可能是最后一次修改和这样,如果我更改它们,它会自动告诉用户浏览器获取最新文件,但除此之外,它会缓存它们,节省我的带宽/请求(亚马逊 s3 对这些文件收费)。如果有人能指出我正确的方向,或者如果已经有一个插件,请告诉我。谢谢。

4

1 回答 1

1

您可以围绕此构建资产管理器:

app.get(function(req, res) {
  res.locals.files = [ 'somefile.js', 'somefile2.js' ];
  res.render('someview');
});

该视图只会创建多个脚本文件。

head
  each file in files
    script(src=base_url + '/' + file)

如果您想将文件合并到一个请求中,您可能需要进一步扩展它。您可以创建一个可以获取文件数组并在每个请求上合并它们的路由。您可以使用 res.sendFile 提供文件。如果我没记错的话,这将处理所有的标题和缓存。

于 2012-10-25T15:15:18.707 回答