html - 使用 Node.js 提供动态网页

标签 html node.js express

我很难理解 node.js 究竟是如何提供动态内容的。 假设我们有以下呈现主页的代码:

var express = require('express'),
    app = express();

app.get('/', function(req,res){
    res.render('home.html');
});

但是,假设这个主页应该是一个用户配置文件,您可以在其中从数据库中提取用户信息,从而生成代码:

var express = require('express'),
    mongoose = require('mongoose'),
    app = express();

mongoose.connect('mongodb://localhost/ExampleDB');

app.get('/:id', function(req,res){
    User.findOne({_id: req.id}, function (err, user){
       var name = user.name;
       var profilePic_uri = user.profilePic_uri;
       res.render('home.html');
});

因此,理想情况下,home.html 只是一个模板页面,您可以在其中在路由处理程序中设置用户的个人资料图片、他们的姓名等。是的,因为 Node 背后的想法是这个 app.js 应该能够在运行时处理从数据库中提取动态内容。我遇到麻烦的地方是理解渲染动态页面如何与 Node 一起工作。 html页面是静态页面。您不能真正呈现 php 或 asp 页面,因为,那真的没有意义,对吗?

这给我留下了一个问题,它是如何完成的?

最佳答案

如果你添加...

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

...在 app=express() 完成后,如果您不使用扩展,它现在将默认使用 Jade 渲染引擎。然后在你的路由器中:

app.get('/', function(req,res){
  res.render('home', {
    var1: 'val1',
    var2: 'val2'
  });
});

您需要将 Jade 添加到项目的依赖项中的 package.json 文件中:

    "jade": "~1.9.1",

...然后在您的文件夹中“npm install”以将其引入。

然后您需要一个名为/views/home.jade 的文件,其内容为:

doctype html
html
  body
    p Var1 is #{var1}
    p Var2 is #{var2}

当您访问您的主页时,您应该会看到这些值已传递给 Jade 渲染引擎并在模板中分别扩展为“val1”和“val2”。

关于html - 使用 Node.js 提供动态网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30444234/

相关文章:

javascript - 使用绝对位置时,jQuery 向左滚动不起作用?

html - 在 Jekyll 中使用数据的正确方法

javascript - 当函数返回对象数组时如何使用 Promise

javascript - 无法在 Node js 教程中提交表单

javascript - 如何在expressjs应用程序中拒绝http请求?

html - 在 NodeJS 提供的静态 html 中显示本地镜像

javascript - 触发器 ('click' ) 导致 “Script is running slowly, do you want to stop it?"

HTML5 验证错误(数字字符引用)

node.js - 您是否建议对 Azure 应用服务上托管的应用程序使用 Bunyan 或 Morgan 等记录器

javascript - 错误 : Cannot find module '[object Object]'