如何在Node中处理静态导航栏?

时间:2014-10-21 16:21:18

标签: html node.js twitter-bootstrap

关于我的背景:我暂时没有做过很多网页开发,而且最近才刚刚开始重新开始。我记得我曾经在PHP中使用静态页眉/页脚文件的日子,代码如下:

<html>
<head>
    <title>Title</title>
</head>
<body>
<?php include("header.php") ?>
Body text here
<?php include("footer.php") ?>
</body>
</html>

我目前正在切换到我的后端节点(由于与此帖子无关的各种原因)。我还是很陌生,所以我想知道是否有一个简单的方法可以为我的前端提供静态页眉/页脚(包含导航栏等)。我尝试将 Bootstrap 用于我的前端框架。

我认为使用Jade或其他模板引擎可能是实现此目的的一种方式,尽管我不一定确定我是否还想使用Jade因为处理js和HTML很麻烦没有在混合中添加另一个伪语言/格式/模板。 所以我想知道是否有使用模板引擎的解决方案。

这是我目前为app.js / web.js文件提供的内容:

var express = require('express')
var app = express()
var path = require('path')
var fs = require('fs');

var bodyparser = require('body-parser')
app.use(bodyparser.urlencoded({extended: false}))

app.use(express.static(path.join(__dirname)));

app.get('/submit', function(req,res) {  
    [functions omitted for brevity]
})

[other processes omitted for brevity]

app.listen(8080)

谢谢!

1 个答案:

答案 0 :(得分:0)

我强烈建议您使用视图引擎。 Node不像PHP。 PHP脚本按顺序处理,呈现的输出作为响应发送。如果您要在节点中执行相同的方法,那么您将在JavaScript中构建一个字符串,然后将其发送给客户端。

app.get('/submit', function(req,res) {  
    var output = '<html>';
    output += '<head>';
    ...
    res.send(output);
});

现在假设您必须查询数据库:

app.get('/submit', function(req,res) {  
    var output = '<html>';
    output += '<head>';
    ...
    db.query(query, function(err, result) {
       output += 'the result is ' + result;
       ...
       res.send(output);
    });
});

所以经验教训是,使用模板引擎,因为它们是为你构建html输出而设计的。从ejs开始,因为它将有更熟悉的php语法。