服务器端包括(SSI)与grunt连接Web服务器

时间:2014-03-14 03:58:25

标签: node.js gruntjs connect yeoman ssi

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

问题在于服务器端包含我们用来包含页眉和页脚。我们之前曾使用Apache,IIS和Tomcat,但不知道如何连接也可以这样做。它只是将其视为html评论。

例如包括:

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

所以, 1.有没有办法让grunt / connect包含这些文件? 2.如果没有,我们可以使用Apache与yeoman / grunt吗? 3.如果全部失败,是否有另一种方法可以包含带连接的文件?

3 个答案:

答案 0 :(得分:6)

您可以在ssi节点模块的帮助下快速处理SSI。

我用这个简单的例子组成了一个github repo: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();
    }
});

答案 1 :(得分:2)

您可以轻松使用connect-ssi: https://github.com/soenkekluth/connect-ssi 我也使用了ssi模块。 现在我包括只允许.shtml文件。 “很快就会改变。

答案 2 :(得分: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/,但之后其他所有内容似乎都能正常运行。