我似乎不知道如何使用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框架。
不,这不是nodeJS的工作方式。如果你喜欢比较,将nodejs与ruby或ASP.NET进行比较。有jade,如dystroy所说,但如果您熟悉HTML语法,则首选ectjs,例如:
stuff...
<div id="content">stuff</div>
<% include 'footer.ect' %>
当然,如果有代码要包含,使用require
nodejs中没有类似的内容。
但是许多使用nodejs的人也使用像express和模板引擎这样的框架。
例如Jade让你做的包括:
索引。文件:
doctype html
html
include includes/head
body
h1 My Site
p Welcome to my super lame site.
include includes/foot
包括/头。文件:
head
title My Site
script(src='/javascripts/jquery.js')
script(src='/javascripts/app.js')
包括/脚。文件:
#footer
p Copyright (c) foobar
值得注意的是,在ajax、单页应用和javascript的时代,模板包含比PHP的旧时代要少得多。您可能想先使用模板(例如使用Jade),然后再决定是否需要include。
您可以使用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>
})
})
希望这对你有帮助!
假设我们必须在index.html
中包含2个文件最简单的方法