我似乎无法弄清楚如何使用Node.js包含文件。所有其他问题似乎都在讨论包括其他JS文件,但我正在寻找相当于PHP包含(可以包含HTML内容的文件)。
通常在PHP中,我的视图文件如下:
...stuff
<?php include 'header.php'; ?>
<?php include 'nav.php'; ?>
... more stuff
<?php include 'footer.php'; ?>
例如在nav.php
我有:
<nav role=navigation>
<ul>
<!-- links -->
</ul>
</nav>
Node中是否有类似的功能,还是我必须改变开发Web应用程序的方式?如果有帮助,我正在使用Express框架。
一个简短的,有效的例子将受到高度赞赏。
答案 0 :(得分:2)
不,这不是nodeJS的工作方式。如果您想比较,请将nodejs与ruby或ASP.NET进行比较。有破坏说有玉,但如果您熟悉HTML语法,请选择ectjs,例如:
stuff...
<div id="content">stuff</div>
<% include 'footer.ect' %>
当然,如果有代码要包含使用require
答案 1 :(得分:1)
没有类似的东西直接与nodejs相似。
但许多使用nodejs的人也使用像express和模板引擎这样的框架。
index.jade 文件:
doctype html
html
include includes/head
body
h1 My Site
p Welcome to my super lame site.
include includes/foot
包含/ head.jade 文件:
head
title My Site
script(src='/javascripts/jquery.js')
script(src='/javascripts/app.js')
包含/ foot.jade 文件:
#footer
p Copyright (c) foobar
应该注意的是,在ajax时代,单页应用程序和javascript,在PHP的旧时代很少需要模板包含。您可能希望首先使用模板(例如使用Jade)稍微玩一下,然后才决定是否需要包含模板。
答案 2 :(得分:0)
您可以使用vash引擎。以此布局页面为例:
<body>
<!-- Body content -->
<div>@html.block("body")</div>
<!-- Render Page Specific Scripts Here -->
@html.block("scripts")
</body>
现在在你的其他观点中,你可以这样做:
@html.extend("layout", function(model){
<!-- main content of the page -->
@html.block("body",function(model){
<h1>This will be the login page</h1>
})
<!-- page specific scripts -->
@html.block("scripts",function(model){
<scrip></script>
})
})
希望这有帮助!
答案 3 :(得分:0)
我们假设我们必须在index.html中包含2个文件
最简单的方式
html index.html
<%include filename.extension%>
<%include anotherfile.html%>
<强>的node.js 强>
var temp = require('templatesjs');
// ... ... ...
fs.readFile("./index.html"){
if(err) throw err;
var output = temp.set(data);
res.write(output);
res.end();
});
当您使用set()
我使用过模块 templatesjs
$ npm install templatesjs
一份好的文件here
github:templatesjs