服务器端包括 (SSI) 和 grunt connect Web 服务器

问题描述 投票:0回答:3

我们在开发过程中使用 yeoman,目前使用“grunt server”命令来运行 grunt connect Web 服务器进行本地开发。每次我们保存文件时,grunt 都会运行它的所有任务并重新加载浏览器。

问题在于我们用来包含页眉和页脚的服务器端包含。我们之前曾让它与 Apache、IIS 和 Tomcat 一起工作,但不知道如何连接来执行相同的操作。它只是将其视为 html 注释。

例如包括:

<!--#include virtual="header.html" --> 

所以, 1. 有没有办法让 grunt/connect 包含这些文件? 2. 如果没有,我们可以将 Apache 与 yeoman/grunt 一起使用吗? 3. 如果都失败了,还有其他方法通过 connect 包含文件吗?

node.js gruntjs yeoman ssi node.js-connect
3个回答
6
投票

您可以在 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();
    }
});

2
投票

您可以轻松使用 connect-ssi: https://github.com/soenkekluth/connect-ssi 我还为此使用了 ssi 模块。 目前我只允许包含 .shtml 文件。 '很快就会改变。


0
投票

非常感谢@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/
但之后其他一切似乎都工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.