Nodejs Express 渲染布局:false,但它仍然有效
Nodejs Express render layout : false , but it still holds
我是 nodejs 新手。我正在使用 express 和 ejs。几个小时前,我看到安装express-ejs-layouts可以在我的项目中使用layout,效果很好,但是现在我正在努力改进我的代码,它突然停止了它的良好功能。
当我看到它运行不佳时,我决定回到工作阶段,代码不多。
app.js
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var cors = require('cors');
var routes = require('./routes/index');
var app = express();
//
app.set('views', path.join(__dirname, '/views'));
app.set('view engine', 'ejs');
//
app.use(logger('dev'));
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, '/public')));
app.use(expressLayouts);
app.use('/', routes);
index.js:
//回家
router.get('/', function(req, res, next) {
res.render('index', { user : req.cookies.UserData, token_id : req.cookies.token_id});
console.log(cookies);
});
//POST登录,这里我检查用户并创建一个令牌和用户数据用于测试
router.post('/user/login',function(req,res,next){
////---here all code, it's a lot----///
res.cookie('token_id', token);
res.cookie('UserData', locals );
res.redirect('/')
});
//获取登录布局 false
router.get('/user/login', function(req, res, next) {
res.clearCookie('token_id');
res.clearCookie('UserData');
res.render('login',{layout : false});
});
当转到 localhost:3000/user/login 时,出现错误 "layout not defined"。但是,我事先使用了对我有用的布局变量。
从布局中删除 <% variable%> 时,“/user/login”没有问题并且不使用布局。
_Head.ejs样本变量
<title><%= user.title %></title>
然后创建 cookie 以查看它是如何工作的,事实证明,使用 cookie 运行 并再次设置布局变量,他继续告诉我 "the user variable is not defined",这段代码是不是我修改的那个,我改进的是一个烤面包机,就是我淘汰的那个
我一直用nodemon。
app.set('layout', 'layout.ejs');
在 app.js 中添加此行。
layout.ejs 应该在您的案例中的 views 文件夹内,正如您定义的那样
app.set('views', path.join(__dirname, '/views'));
我是 nodejs 新手。我正在使用 express 和 ejs。几个小时前,我看到安装express-ejs-layouts可以在我的项目中使用layout,效果很好,但是现在我正在努力改进我的代码,它突然停止了它的良好功能。
当我看到它运行不佳时,我决定回到工作阶段,代码不多。
app.js
var express = require('express');
var expressLayouts = require('express-ejs-layouts');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var cors = require('cors');
var routes = require('./routes/index');
var app = express();
//
app.set('views', path.join(__dirname, '/views'));
app.set('view engine', 'ejs');
//
app.use(logger('dev'));
app.use(cors());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, '/public')));
app.use(expressLayouts);
app.use('/', routes);
index.js:
//回家
router.get('/', function(req, res, next) {
res.render('index', { user : req.cookies.UserData, token_id : req.cookies.token_id});
console.log(cookies);
});
//POST登录,这里我检查用户并创建一个令牌和用户数据用于测试
router.post('/user/login',function(req,res,next){
////---here all code, it's a lot----///
res.cookie('token_id', token);
res.cookie('UserData', locals );
res.redirect('/')
});
//获取登录布局 false
router.get('/user/login', function(req, res, next) {
res.clearCookie('token_id');
res.clearCookie('UserData');
res.render('login',{layout : false});
});
当转到 localhost:3000/user/login 时,出现错误 "layout not defined"。但是,我事先使用了对我有用的布局变量。
从布局中删除 <% variable%> 时,“/user/login”没有问题并且不使用布局。
_Head.ejs样本变量
<title><%= user.title %></title>
然后创建 cookie 以查看它是如何工作的,事实证明,使用 cookie 运行 并再次设置布局变量,他继续告诉我 "the user variable is not defined",这段代码是不是我修改的那个,我改进的是一个烤面包机,就是我淘汰的那个
我一直用nodemon。
app.set('layout', 'layout.ejs');
在 app.js 中添加此行。
layout.ejs 应该在您的案例中的 views 文件夹内,正如您定义的那样
app.set('views', path.join(__dirname, '/views'));