express 4.0x 用ejs妫傻腶pp.js没有app.configure,怎么弄
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了express 4.0x 用ejs妫傻腶pp.js没有app.configure,怎么弄相关的知识,希望对你有一定的参考价值。
参考技术A 请参考我的文章“使用express4.x版和Jade模板重写《nodejs开发指南》微博实例 ”我使用express4写的app.js
var express = require(‘express’);
var path = require(‘path’);
var favicon = require(‘static-favicon’);
var logger = require(‘morgan’);
var cookieParser = require(‘cookie-parser’);
var bodyParser = require(‘body-parser’);
//var partials = require(‘express-partials’);用jade模板,不能使用这个中间件
var session = require(‘express-session’);
var MongoStore = require(‘connect-mongo’)(session);
var settings = require(‘./settings’);
var flash = require(‘connect-flash’);
var routes = require(‘./routes/index’);
var users = require(‘./routes/users’);
var app = express();
// view engine setup
app.set('views’, path.join(__dirname, ‘views’));
app.set('view engine’, ‘jade’);
//app.use(partials());
app.use(favicon());
app.use(logger(‘dev’));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
//cookie解析的中间件
app.use(cookieParser());
app.use(express.static(path.join(__dirname, ‘public’)));
app.use(flash());
//提供session支持
app.use(session(
secret: settings.cookieSecret,
store: new MongoStore(
db: settings.db,
)
));
app.use(function(req, res, next)
console.log(“app.usr local”);
res.locals.user = req.session.user;
res.locals.post = req.session.post;
var error = req.flash(‘error’);
res.locals.error = error.length ? error : null;
var success = req.flash(‘success’);
res.locals.success = success.length ? success : null;
next();
);
app.use('/’, routes);
app.use('/users’, users);
/// catch 404 and forward to error handler
app.use(function(req, res, next)
var err = new Error(‘Not Found’);
err.status = 404;
next(err);
);
/// error handlers
// development error handler
// will print stacktrace
if (app.get(‘env’) === ‘development’)
app.use(function(err, req, res, next)
res.status(err.status || 500);
res.render('error’,
message: err.message,
error: err
);
);
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next)
res.status(err.status || 500);
res.render('error’,
message: err.message,
error:
);
);
module.exports = app;本回答被提问者和网友采纳
Express + EJS - 将参数传递给 EJS 视图
【中文标题】Express + EJS - 将参数传递给 EJS 视图【英文标题】:Express + EJS - passing arguments to EJS view 【发布时间】:2016-10-06 13:21:55 【问题描述】:我对 Node.js/Express/EJS 比较陌生。
我最近注意到,当我将参数从 Express 请求处理程序传递到 EJS 视图并省略参数名称时,它会根据变量名称创建一个名称。因此,例如,在下面的代码中,
//server.js
var express = require('express');
var app = express();
app.set('view engine', 'ejs');
app.get('/', function(req, res)
var products = [
name: 'Tennis Ball', price: 10 ,
name: 'Basketball', price: 20
];
res.render('index', products);
);
app.listen(8080);
//index.ejs
<ul>
<% products.forEach(function(product) %>
<%= product.name %>
<% )%>
</ul>
传递的参数将被称为“产品”,视图将能够很好地迭代它。我认为,为了更好的代码可读性,我应该放置这一行:
res.render('index', products : products);
我想知道是否可以同时使用这两种技术?
【问题讨论】:
【参考方案1】:两者之间的区别在于您定义对象及其属性的方式。
products
告诉 V8 引擎将属性 products
分配给范围内的变量 products
的值。这称为Object Literal Property Value Shorthand,是 ES6 的一个特性。
products: products
是在 ES6 中创建对象的长格式方式,而在 ES6 之前的任何版本中only 方式。
只要您的 Node 版本支持简写,您就可以使用它。一切都与偏好和可读性有关,这里没有对错之分。
【讨论】:
【参考方案2】:两个代码都被编译成相同的结果。 第一个版本是 linter 推荐的,因为它更短且易读。
请学习 JavaScript 风格指南,有很多指南,例如Airbnb、谷歌等。
我在这里推荐airbnb。 https://github.com/airbnb/javascript
【讨论】:
以上是关于express 4.0x 用ejs妫傻腶pp.js没有app.configure,怎么弄的主要内容,如果未能解决你的问题,请参考以下文章