如何在Express中用Handlebars渲染静态和动态文件

439 阅读2分钟

静态文件和动态文件是什么意思?

静态是指预先渲染好的网页,不随时间变化。动态意味着它是在服务器请求时实时生成的。

在这篇文章中,你将学会:

  • 渲染一个静态文件,仅仅使用节点模块
  • 使用hbs包渲染一个动态文件
  • 渲染不同扩展名的文件

为此,你需要有一些关于JavaScript和HTML的知识,并且应该知道如何用Node.js和Express构建一个应用程序。如果你不熟悉这些,请参考我之前的文章

然而,让我们在这里提供一个快速回顾。

  1. 为你的项目启动NPM。
npm init

2.安装所需的软件包(Express、nodemon)。

npm install express nodemon

3.在5000端口启动服务器。

app.listen(5000, ()=> {

     console.log(`server is running in port 5000`);

})

用Node.js和Express渲染一个静态文件

首先,在根目录下创建一个名为views的文件夹,用来放置你要渲染的文件。然后,创建你要渲染的HTML文件。

index.html

我不关心前台,因为我们的重点是后台。

创建这个文件后,你需要导入路径节点模块。

const path = require("path");

然后你可以用下面的命令渲染这个HTML文件。

app.use(express.static(path.join(__dirname, “/views”)));

index.js

渲染一个动态文件

有几种模板,如pug、handlebars、ejs等来渲染动态网页。但我们的项目将使用handlebars。

所以,我们需要安装hbs包:

npm install hbs

然后,导入该包:

const hbs = require('hbs');

视图引擎能够使用特定的模板渲染动态网页。

我们需要将视图引擎设置为hbs:

app.set("view engine", "hbs");

为了避免混淆,我们需要告诉视图引擎关于视图的路径:

app.set("views", path.join(__dirname,"/public"));

这里,公共 是我们用来存储文件的文件夹名称。因此,创建一个名为 index 的新文件, ,扩展名为.hbs的

.hbs是handlebars的扩展名。

你可以使用res.render()函数来渲染文件,有了它,你就需要传递动态数据。

根据这个名称和年龄:

app.get("/", (req, res) => {

    res.render("index", {

    name: "Kushan", age: 24

});});

index.js

渲染不同扩展名的文件

到目前为止,我们只演示了如何渲染扩展名为.hbs的文件。

所以,让我们看看如何渲染一个不同扩展名的文件。

你只需要对上述index.js的代码做一些修改。然后在公共文件夹中创建一个名为index.html的文件(扩展名为.html)。在该文件中输入任何你想显示的内容:

app.set("view engine", "html");
app.engine('html', hbs.__express);

总结

我们在文章的开头提到了静态和动态文件的区别。然后,我们谈到了在没有任何包的情况下渲染一个静态文件。之后,我们学习了如何用手柄渲染一个动态文件,然后再渲染一个扩展名为.html的文件。