【问题标题】:NodeJS include header and footer without EJSNodeJS 包含没有 EJS 的页眉和页脚
【发布时间】:2017-01-20 10:28:07
【问题描述】:

我希望有人可以帮助我处理 NodeJS。 Iv 最近开始使用 NodeJS 开发我的网站。

问题:

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

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

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

这一切都有效,但是我不确定如何实现一种简单的方法来加入文件内容。 iv 在线查看的每个来源都表明“正确”的方法是通过一个名为 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') );
        };

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

【问题讨论】:

  • 不支持EJS是什么意思?它只是一个节点模块。还有很多其他的模板引擎。我喜欢doT
  • 我正在使用 openshift 并且无法访问服务器端控制台以使用 NPM,因此在 nodejs 上安装节点似乎不清楚,该网站声明可以通过修改 package.json 来包含节点,但没有提及究竟要使用什么格式来启用它们...

标签: javascript html css node.js


【解决方案1】:

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)

【讨论】:

  • 这非常有用,实际上比 EJS 更容易上手,如果我可以多次投票的话。
  • 我很高兴! :D
【解决方案2】:

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

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

在此说明中,如果您要继续使用 node.js,您应该阅读有关包管理的详细信息。 https://docs.npmjs.com/how-npm-works/packages

【讨论】:

  • 很好的答案,非常感谢您抽出宝贵的时间。我一直在阅读它,并且在文件中它有一个依赖项部分,但是虽然格式很简单,但它确实说明了如何查找特定依赖项的哪些版本号是可以接受的......“express”:“~3.4.4”是有一些当前版本的列表可供了解..?
  • 当您使用npm install express --save 之类的东西时,它会自动为您选择最新的稳定版本。您可以在本地下载的任何版本都可以在您的主机上接受,因为它只是更多的 javascript。
猜你喜欢
  • 2018-06-24
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-21
相关资源
最近更新 更多