为什么在更改swig模板时需要重启express服务器?

Col*_*own 6 node.js express

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

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

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

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

rob*_*lep 7

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

我使用类似的东西:

swig.init({
  ..
  cache : app.get('env') === 'production',
  ..
});
Run Code Online (Sandbox Code Playgroud)

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


Jon*_*Ong 0

一般来说,模板有两个步骤。第一个是“编译”,其中模板被转换为函数,然后是“渲染”,其中函数仅使用局部变量执行。

对于 ejs 和大多数模板系统,编译是在开发期间根据每个请求完成的。然而,对于 swig,它可能总是缓存编译步骤,即使 express 说“不在生产中时不要缓存”,因此“功能”在重新启动之前不会改变。

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