我们在开发过程中使用 yeoman,目前使用“grunt server”命令来运行 grunt connect Web 服务器进行本地开发。每次我们保存文件时,grunt 都会运行它的所有任务并重新加载浏览器。
问题在于我们用来包含页眉和页脚的服务器端包含。我们之前曾让它与 Apache、IIS 和 Tomcat 一起工作,但不知道如何连接来执行相同的操作。它只是将其视为 html 注释。
例如包括:
<!--#include virtual="header.html" -->
所以, 1. 有没有办法让 grunt/connect 包含这些文件? 2. 如果没有,我们可以将 Apache 与 yeoman/grunt 一起使用吗? 3. 如果都失败了,还有其他方法通过 connect 包含文件吗?
您可以在 ssi 节点模块的帮助下快速处理 SSI。
我用这个简单的例子制作了一个 github 存储库:https://github.com/sfarthin/express-ssi-example .
我将此应用程序部署到 Heroku,以便您可以看到它的实际运行情况:http://intense-basin-9464.herokuapp.com/
app.use(function(req,res,next) {
var filename = __dirname+(req.path == "/" ? "/index.shtml" : req.path);
if(fs.existsSync(filename)) {
res.send(parser.parse(filename, fs.readFileSync(filename, {encoding: "utf8"})).contents);
} else {
next();
}
});
您可以轻松使用 connect-ssi: https://github.com/soenkekluth/connect-ssi 我还为此使用了 ssi 模块。 目前我只允许包含 .shtml 文件。 '很快就会改变。
非常感谢@steve-farthing和@soenke的帮助,我最终使用了一个更简单的解决方案,即安装启用SSI的Apache并将以下JS标签添加到页脚。
<script type="text/javascript">
document.write('<script src="//localhost:35729/livereload.js?snipver=1" type="text/javascript"><\/script>')
</script>
现在,当我们运行
grunt serve
时,我们仍然需要手动导航到 http://localh0st/app/
但之后其他一切似乎都工作正常。