6

通常,在 Express 中使用 EJS 模板时,我不必重新启动服务器即可查看我对模板所做的更改。我只是对 .ejs 文件进行更改并重新加载浏览器以查看我的更改。

但是,使用 swig 模板(我非常喜欢它而不是 ejs),如果我对 .html 文件进行更改,我必须重新启动服务器才能看到我的更改反映在浏览器中。

这是一个错误,还是只是我忽略的其他东西的副作用?

我不是在寻找像 grunt watch、nodemon 或 supervisor 这样的工具,我只是希望我的 swig 模板在可能的情况下表现得更像 ejs 模板。

4

2 回答 2

7

Swig API 文档中所述,您可以将 Swig 配置为不缓存模板。

我使用类似的东西:

swig.init({
  ..
  cache : app.get('env') === 'production',
  ..
});

这将使其仅在生产环境中缓存已编译的模板。

于 2013-05-07T07:08:48.950 回答
0

通常,模板有两个步骤。第一个是“编译”,将模板转换为函数,然后是“渲染”,该函数仅使用局部变量执行。

对于 ejs 和大多数模板系统,在开发期间对每个请求进行编译。然而,对于 swig,它可能总是缓存编译步骤,即使 express 说“不在生产中时不缓存”,所以“函数”在你重新启动之前不会改变。

解决方案?问 swig,告诉他们支持在https://github.com/visionmedia/consolidate.js中启用/禁用缓存

于 2013-05-07T05:11:39.657 回答