我想知道如何在Express应用程序中显示常见的html标头信息。我试图在我的网络应用程序上显示所有页面上的公共菜单或标题,但无法弄清楚如何执行此操作而无需复制并将html粘贴到我服务器上的每个html文件中。我相信这可以通过路线完成。我的应用程序结构如下:
/ web root
- server.js // main web server
/public
- css, 3rd party js files, images
/routes
- index.js includes renders to seperate pages
/views
- jade and html files.
答案 0 :(得分:1)
如果您正在使用Jade,那么您实际上不会通过路线执行此操作,而是使用Layouts。如果您使用express-cli工具生成项目,那么您将注意到views / homepage.jade文件使用layout.jade文件来执行您期望的操作。
如果你想要一个更复杂的例子,我在这里做了一个基于Bootstrap的演示项目:https://github.com/newz2000/template-test-jade
在任何一种情况下,我们的想法是你有一个使用如下语法的文件:
extends layout
block content
your page's content here
然后你的layout.jade文件会有这样一行:
block content
当您res.render()第一个文件时,它将首先呈现布局并从layout.jade文件中取出block content
并将其替换为您页面的内容。
另外两件事要考虑:
Handlebars.js是一种更像HTML的模板语言,支持布局和部分,因此您可以将其用于您的目标。有几个步骤可以让它工作,但并不难。我在此处记录了它:http://www.bearfruit.org/2014/01/20/node-js-showdown-handlebars-compared/
只需使用纯静态HTML文件即可。是的,你失去了让Node.js管理公共标题的能力,但是你得到了普通的标题。 HTML。您可以将index.html放入公用文件夹,然后确保没有与之冲突的路由,它将作为您的主页。