NodeJS包括没有EJS的页眉和页脚

时间:2016-09-12 22:11:35

标签: javascript html css node.js

我希望有人可以帮我解决NodeJS问题。 Iv最近开始使用NodeJS开发我的网站。

问题:

我正在寻找一种方法将文档作为标题,内容,页脚样式发送,以便减少每个部分的重复代码。

我有一个公用文件夹设置,所以我可以包含Js,CSS和常用文件等...

self.app.use(express.static(__dirname + '/public'));

这一切都有效,但我不确定如何实现加入文件内容的简单方法。静态查看在线的每个来源都表明“正确”的方式是通过一个名为EJS模板的软件包。

所以我在EJS中寻找类似于这个实现的东西:

<header>
    <% include ../partials/header %>
</header>

<footer>
    <% include ../partials/footer %>
</footer>

但是,托管的服务不支持EJS,那么可以做这样的事情吗?

self.routes['/'] = function(req, res) {
            res.setHeader('Content-Type', 'text/html');
            res.send(self.cache_get('header.html')+self.cache_get('index.html')+self.cache_get('footer.html') );
        };

是否有另一种简单的方法来分隔标题,内容和页脚,以便更轻松地开发具有动态内容的网站?

2 个答案:

答案 0 :(得分:4)

虽然您可以编写自己的js来执行此操作,但在目前的级别我不推荐它(除了用于学习和实验目的)。这就是节点如此强大的原因,因为您不必一直重新发明轮子。您注意到您正在使用openshift,并且您无法使用模块。 这是您不正确的地方

This link解释了如何在openhift中使用npm。任何node.js托管服务都不允许包集成,这将是非常愚蠢的。要简要说明这是如何工作的,您实际上是使用--save标志在本地环境中安装软件包。这将更新您的本地package.json文件,其中包含有关您的依赖项和版本的详细信息。当您将repo推送到主机时,它会查看此文件,并为您处理依赖项安装。

在本文中,如果您要继续使用node.js,您应该对包管理有一个很好的阅读。 https://docs.npmjs.com/how-npm-works/packages

答案 1 :(得分:3)

Trumpet应该让你这样做。这样的事情可能有用:

const trumpet = require('trumpet')
const tr = trumpet()

tr.pipe(res)

const header = tr.select('header').createWriteStream()
fs.createReadStream('header.html').pipe(header)

const footer = tr.select('footer').createWriteStream()
fs.createReadStream('footer.html').pipe(footer)

fs.createReadStream('index.html').pipe(tr)