[code] express -t ejs microblog[/code]问题是express -t参数已经失效,最新的express版本的默认模板引擎是jade,所以为了使用ejs,我们需要像下面这样创建项目:
[code] express -e ejs microblog[/code]按照书中所说的,我们直接运行代码:
[code] supervisor app.js[/code]并且在浏览器中输入http://localhost:3000/,并不能看到书中需要的效果,而是需要在app.js中app.use('/', routes);后面添加:
[code] app.listen(3000); Console.log(something happening);[/code]按照书中的步骤往下走,我们会发现一个问题,因为在views文件夹里面不是layout.ejs和index.ejs,这是因为,最新版本的express不支持ejs模块的partials方法,所以需要自己额外安装模块:
[code] npm install express-partials[/code]然后在app.js中添加:
[code] var partials = require('express-partials');
app.use(partials());[/code]
需要注意的是,这一行要添加到app.set('view engine', 'ejs');后面,如果添加到app.use('/', routes);后面,会出现css引用失败的现象,博主还不明白原因。
这时候就可以在views中新建文件layout.ejs,然后复制书中112页的layout.ejs代码到我们新建的文件上面。然后运行代码,就能看到下面的效果了:
[img]http://files.jb51.net/file_images/article/201503/2015032516041113.png[/img]
以上的步骤都不算什么问题,问题就出在连接数据库的一系列问题!如下所述:
为了执行下面的操作,我们首先需要安装MongoDB数据库,博主推荐这篇博客:http://be-evil.org/install-mongodb-on-windows7.html
看了不少安装MongoDB的博客,这个是博主见过最有效的。
对于新版本的express,按照书本上那样连接数据库会报错,连接数据库需要的文件时settings.js,这个按照书上的来没有问题,但是models中的db.js需要做一些改动。如果按照书中的代码:
[code] var settings = require('../settings');
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_ PORT, {}));[/code]
可能会出现下面的问题:
[img]http://files.jb51.net/file_images/article/201503/2015032516041214.png[/img]
博主google之后,才发现需要按照下面的格式书写:
[code] var settings = require('../settings'),
Db = require('mongodb').Db,
Connection = require('mongodb').Connection,
Server = require('mongodb').Server;
module.exports = new Db(settings.db, new Server(settings.host, Connection.DEFAULT_PORT, {}), {safe: true});[/code]
在引用settings模块的时候,如果按照书中的:
[code] var settings = require('../settings');[/code]
会出现:
[img]http://files.jb51.net/file_images/article/201503/2015032516041215.png[/img]
这是因为最新的express版本中需要这样引用这个模块:
[code] var settings = require('./settings');[/code]
但是解决了这个问题之后,相继出现了下面这个令人蛋疼的情况:
[img]http://files.jb51.net/file_images/article/201503/2015032516041216.png[/img]
一开始我也是琢磨不透,但是google的时候,有一个哥们做了很好的解答:
http://www.cnblogs.com/yumianhu/p/3709558.html
也就是说,在express4中我们需要自己安装express-session包,然后添加引用:
[code] var session = require('express-session');[/code]
原来的数据库引用也需要改成:
[code] var MongoStore = require('connect-mongo')(session);[/code]
而这些代码:
[code] app.use(express.session({
secret: settings.cookie_secret,
store:new MongoStore({
db: settings.db
})}));[/code]
就需要改写成:
[code] app.use(session({
secret: settings.cookie_secret,
store: newMongoStore({
db : settings.db,
})
}));[/code]
对于书中提到的视图交互,原本的代码是:
[code] app.dynamicHelpers({
user: function(req, res) {
return req.session.user;
},
error: function(req, res) {
var err = req.flash('error');
if (err.length)
return err;
else
return null;
},
success: function(req, res) {
var succ = req.flash('success');
if (succ.length)
return succ;
else
return null;
},
});[/code]
在最新版本的express中需要改成:
[code] 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();
});[/code]
注册页面中用到了flash,但是最新版本的express已经不支持flash了,你需要先使用npm install connect-flash。然后在app.js中添加如下代码:
[code] app.use(flash());[/code]接下来按照书上的步骤走,基本不会出问题了,最后我们就能得到我们想要的效果啦~: [img]http://files.jb51.net/file_images/article/201503/2015032516041217.png[/img] 需要说明一下的是,跟着书本写这个小应用的时候,出现了很多问题,也就是上面遇到的很多问题,但是博主都是本着自主研究的精神不断google,终于跳出神坑,得到了最后的效果,希望看到这篇博客的朋友好好研读,也好好看看下面的链接,里面很可能也是你遇到的问题,如果你在跟着书本编写代码的过程中遇到了问题,欢迎一起交流~ 以上就是本文的全部内容了,请您花一点时间将文章分享给您的朋友或者留下评论。我们将会由衷感谢您的支持!
机械节能产品生产企业官网模板...
大气智能家居家具装修装饰类企业通用网站模板...
礼品公司网站模板
宽屏简约大气婚纱摄影影楼模板...
蓝白WAP手机综合医院类整站源码(独立后台)...苏ICP备2024110244号-2 苏公网安备32050702011978号 增值电信业务经营许可证编号:苏B2-20251499 | Copyright 2018 - 2025 源码网商城 (www.ymwmall.com) 版权所有