在Node.js中包含HTML文件



我似乎不知道如何使用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个文件

最简单的方法

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()

时,这两个文件将自动包含在index.html中。

我已经使用了模块templatesjs

$ npm install templatesjs

这里有一个很好的文档

相关内容

  • 没有找到相关文章

最新更新