Node.js 开始使用express.js,提供动态HTML

Node.js 开始使用express.js,提供动态HTML,node.js,express,Node.js,Express,我正在使用node.js和express编写一个单页web应用程序。在阅读了一些在线教程之后,我发现express.js是如何使用HTML、javascript和css为客户机目录提供服务的 app.use(express.static(__dirname + '/public')); 除了公共目录必须有静态的.html根文件之外,这非常有效。我想知道如何使用同样的方法为动态HTML文件提供服务 我想在页面顶部插入一些数据,例如“Hello user_name”。对于这个文件,我该怎么做呢 我

我正在使用node.js和express编写一个单页web应用程序。在阅读了一些在线教程之后,我发现express.js是如何使用HTML、javascript和css为客户机目录提供服务的

app.use(express.static(__dirname + '/public'));
除了公共目录必须有静态的.html根文件之外,这非常有效。我想知道如何使用同样的方法为动态HTML文件提供服务

我想在页面顶部插入一些数据,例如“Hello user_name”。对于这个文件,我该怎么做呢


我只想在启动时执行一次,之后我的应用程序将进行rest API调用并获得简单的JSON响应,然后将其放入页面。

据我所知,您不能使用express static server来提供动态文件。为了提供动态HTML,您需要使用模板引擎,例如或其中的任何一个

Jade的使用非常简单,默认情况下express支持它。要设置jade,请在应用程序配置块中包含以下行:

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
第一行设置视图目录-模板文件将从该目录提供服务。由于您只希望提供索引文件,因此此目录将包含index.jade模板。第二行将jade设置为模板引擎

现在,您需要创建一个get route“/”来服务索引文件,而不是使用静态服务器来服务index.html,如下所示:

app.get('/', function(req, res) {
    res.render('index', {user_name: username});
});

这是否意味着我只提供模板?那么整个公共目录中所有的javascript和css文件呢?使用
app.use(express.static…
,公共目录中的所有Javascript、CSS甚至其他HTML文件仍将从/public静态提供。唯一将动态提供的文件是视图目录中的index.jade。这不是我们需要的。我们需要一些页面来动态呈现(用于服务器端数据呈现)还有angular.js的一些静态特性