Nodejs相关问题:我在看《nodejs开发指南》,有迷惑。express如何默认生成ejs的网站结构,我按书上的打,获得的还是jade。还有第100页,出现"partial is not defined"求帮助。
Nodejs相关问题:我在看《nodejs开发指南》,有迷惑。express如何默认生成ejs的网站结构,我按书上的打,获得的还是jade。还有第100页,出现"partial is not defined"求帮助。
Nodejs相关问题:我在看《nodejs开发指南》,有迷惑。express如何默认生成ejs的网站结构,我按书上的打,获得的还是jade。还有第100页,出现"partial is not defined"求帮助。
问题描述
我正在阅读《Nodejs开发指南》,遇到了两个问题:
- 我想使用 EJS 作为模板引擎,但按照书中的步骤设置后,Express 依然使用 Jade(现在叫 Pug)作为默认模板引擎。
- 在第100页的代码中,我遇到了
partial is not defined
的错误。
解决方案
1. 设置 Express 使用 EJS 模板引擎
首先,你需要确保你已经安装了 EJS 模板引擎。你可以通过 npm 安装它:
npm install ejs --save
然后,在你的应用入口文件(通常是 app.js
或 server.js
)中,明确指定使用 EJS 作为模板引擎:
const express = require('express');
const app = express();
// 设置模板引擎为 EJS
app.set('view engine', 'ejs');
// 示例路由
app.get('/', (req, res) => {
res.render('index', { title: 'Hello from EJS' });
});
app.listen(3000, () => console.log('App listening on port 3000'));
2. 解决 “partial is not defined” 错误
partial
通常是一个自定义的函数或库,用于包含部分视图。如果你在书上看到的例子中使用了 partial
,那么你需要自己定义它或引入相应的库。例如,你可以创建一个名为 partials
的目录,并编写一个简单的 partial 函数:
// 在 routes.js 或其他合适的地方定义 partial 函数
function partial(res, name) {
res.partial(name);
}
或者,你可以在模板中直接使用 EJS 的 <%- include('partialName') %>
语法来包含部分视图,而不是使用 partial
函数。
示例代码
假设你有一个简单的项目结构如下:
project/
├── views/
│ ├── index.ejs
│ └── partials/
│ └── header.ejs
├── app.js
└── package.json
app.js
const express = require('express');
const app = express();
app.set('view engine', 'ejs');
app.get('/', (req, res) => {
res.render('index', { title: 'Hello from EJS' });
});
app.listen(3000, () => console.log('App listening on port 3000'));
views/index.ejs
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title><%= title %></title>
</head>
<body>
<!-- 包含部分视图 -->
<%- include('./partials/header.ejs') %>
</body>
</html>
views/partials/header.ejs
<header>
<h1>Header Content</h1>
</header>
通过以上步骤,你应该能够解决你的问题并正确配置 Express 使用 EJS 模板引擎。
本群有本书的作者。
express -e 项目名称
npm install -g express 全部命令
首先创建一个 microblog 文件夹
然后 打开 命令CMD 进入 microblog这个文件夹
npm install express 注意这里一定要在 microblog文件夹下运行
npm install jade
npm install ejs
express -e ejs microblog
搞定。。。。。初学者有错请说
没有生成 layout.ejs,自己手动添加一个,默认页面index.ejs居然没有使用layout.ejs
作者写的时候还是express 2.0 现在已经3.0了 很多都变了 不过大体思路是一致的
layout在3.0中取消了需要安装个express-partial的东西,准备
你可以看一下那个package.json包,里面默认是jade,修改以下
这个很easy ,使用webstorm 建个新的project 。一下子就ok了。
+1 修改够npm install
搭车同问。 我最近也在看这本书,有个问题。 模板引擎用的也是ejs,但是为什么不会去引用layout.ejs. 在route下的index.js 中,指定了也不会引用了,也没去加载?
<p>这样输入也同样实现:</p>
npm install express -g
npm install ejs -g
express -e ejs microblog
我之前做的时候也遇到过,确实是nodejs版本的问题
都升级了,要跟上时代
用include
代替layout吧
试验OK !
在express中使用ejs的模版引擎,但是不知道其中在什么地方调用了layout.html这个模版。3d打印
ejs要使用layout得引入express-ejs-layouts,可以去github上看看使用方法enter link description here
恩 同问
使用include: <ul> <% items.forEach(function(listitem){ %> <% include listitem %> <% }) %> </ul>
需要安装express-partials包 详细看这里http://cnodejs.org/topic/50c1a0ed637ffa4155d05256
在views下新建一个layout.ejs 文件
在app.js中进行配置 var partials = require(‘express-partials’ ); // 启用layout app.use(partials());
layout就启用了
我也在看这本书接触nodejs
这本书的微博例子,没有说创建mongodb的数据库创建?
哦,数据自动载入,但是运行例子还是报错。。。
我把ejs给换成twig了. 恩. 不想用华丽的语词来介绍. 反正自认为写出的模板就像面向对象一样, 还能继承呢. 自己去看吧. PHP 的 Symfony2的默认模板引擎就是它.
不仅是继承模板, 还能继承block
之前用的是jade, 发现不支持block 继承, 于是换了. 不过jade的写法真爽