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,怎么弄的主要内容,如果未能解决你的问题,请参考以下文章

nodejs创建ejs工程

Node.js+express+ejs新建个项目

express模版引擎

express+ejs+mongodb

在 Express/EJS 模板中,循环数组的最简洁方法是啥?

Express简单使用