在Node.js中包含带有HTML的文件

时间:2014-05-28 14:50:58

标签: html node.js express include server-side-includes

我似乎无法弄清楚如何使用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框架。

一个简短的,有效的例子将受到高度赞赏。

4 个答案:

答案 0 :(得分:2)

不,这不是nodeJS的工作方式。如果您想比较,请将nodejs与ruby或ASP.NET进行比较。有破坏说有玉,但如果您熟悉HTML语法,请选择ectjs,例如:

stuff...
<div id="content">stuff</div>
<% include 'footer.ect' %>

当然,如果有代码要包含使用require

答案 1 :(得分:1)

没有类似的东西直接与nodejs相似。

但许多使用nodejs的人也使用像express和模板引擎这样的框架。

例如Jade lets you do includes

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

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

我使用过模块 templatesjs

$ npm install templatesjs

一份好的文件here
github:templatesjs