Nodejs ejs解析html后缀
Nodejs ejs解析html后缀
新建:express web -e(新建ejs模板的网站web)
安装:cd web;npm install
修改:在app.js中添加app.register(’.html’,require(‘ejs’));
运行:node app.js
错误:
Nodejs ejs解析html后缀
在使用Express框架时,我们经常需要将EJS作为视图引擎来渲染HTML页面。默认情况下,Express可能不会自动识别.html
文件作为EJS模板文件。因此,我们需要对其进行一些配置,以便能够使用.html
作为后缀来解析EJS模板。
示例代码
首先,确保你已经安装了Express和EJS模块。如果没有安装,可以使用以下命令进行安装:
npm install express ejs --save
接下来,在你的项目中创建一个简单的Express应用,并配置EJS模板引擎以支持.html
后缀。
app.js
const express = require('express');
const path = require('path');
const app = express();
// 设置视图引擎为EJS
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
// 注册.html为EJS模板
app.engine('.html', require('ejs').__express);
// 静态文件服务
app.use(express.static(path.join(__dirname, 'public')));
// 路由示例
app.get('/', (req, res) => {
res.render('index.html', { title: 'Welcome to EJS' });
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
views/index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<h1>Welcome to the EJS page!</h1>
</body>
</html>
解释
-
设置视图引擎:
app.set('view engine', 'ejs');
设置默认的视图引擎为EJS。app.set('views', path.join(__dirname, 'views'));
指定视图文件的位置。
-
注册.html为EJS模板:
app.engine('.html', require('ejs').__express);
这行代码告诉Express如何处理.html
文件。require('ejs').__express
是EJS模块提供的一种方法,用于解析EJS模板。
-
路由和渲染:
app.get('/', ...)
定义了一个根路径的路由,当访问该路径时,会调用res.render('index.html', { title: 'Welcome to EJS' });
方法来渲染index.html
文件,并传递一个包含title
属性的对象。
通过以上步骤,你可以成功地让Express使用EJS模板引擎来解析具有.html
后缀的文件。
####同遇到这个问题,也没搞明白怎么回事
在Node.js项目中使用EJS作为视图引擎时,默认情况下EJS模板文件的扩展名是.ejs
。如果你想使用.html
扩展名来保存你的EJS模板文件,可以通过修改Express应用中的配置来实现。
以下是如何设置Express以支持.html
扩展名的EJS模板文件:
示例代码
首先,确保你在项目中已经安装了EJS模板引擎:
npm install ejs --save
然后,在你的app.js
(或server.js
等主文件)中添加如下配置:
const express = require('express');
const app = express();
// 设置EJS为模板引擎,并指定.html作为扩展名
app.set('views', './views'); // 设置视图文件夹路径
app.set('view engine', 'ejs'); // 设置EJS为模板引擎
app.engine('.html', require('ejs').__express); // 注册.ejs扩展名为.html文件使用
// 其他中间件和路由配置
app.get('/', function(req, res) {
res.render('index.html', { title: 'Hello EJS' }); // 渲染index.html文件
});
// 启动服务器
const port = process.env.PORT || 3000;
app.listen(port, () => console.log(`App listening on port ${port}`));
解释
-
app.set('views', './views')
: 指定视图文件所在的目录。在这个例子中,假设所有视图文件都在views
文件夹中。 -
app.set('view engine', 'ejs')
: 设置EJS作为默认的模板引擎。 -
app.engine('.html', require('ejs').__express);
: 注册.html
扩展名的文件使用EJS模板引擎。注意这里使用的是__express
方法,它是EJS库中用于注册自定义文件扩展名的方法。 -
res.render('index.html', { title: 'Hello EJS' })
: 渲染名为index.html
的视图文件,并传递一个包含数据的对象给模板。
通过上述步骤,你可以让Express应用正确识别并渲染.html
扩展名的EJS模板文件。这样你就可以用.html
扩展名来组织你的EJS模板文件了。