静态文件和动态文件是什么意思?
静态是指预先渲染好的网页,不随时间变化。动态意味着它是在服务器请求时实时生成的。
在这篇文章中,你将学会:
- 渲染一个静态文件,仅仅使用节点模块
- 使用hbs包渲染一个动态文件
- 渲染不同扩展名的文件
为此,你需要有一些关于JavaScript和HTML的知识,并且应该知道如何用Node.js和Express构建一个应用程序。如果你不熟悉这些,请参考我之前的文章。
然而,让我们在这里提供一个快速回顾。
- 为你的项目启动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的文件。