express4.8之microblog学习笔记
发布于 5个月前 作者 yuu2lee4 1125 次浏览

#学习环境:# Node.js : 0.10.31+Express :4.8.6+MongoDB : 2.6.4 #学习例子:# nswbmw一个简单的博客 我将按照例子中的章节依次列出遇到的问题以及解决的方法。

#START# ##第1章 一个简单的博客 ## ###安装 Express### npm install -g express-generator 4.0+版本中将命令工具分出来了,所以可以不安装express,但必须要安装express-generator ###新建一个工程### node app不管用了,因为建服务器的代码写进了bin/www,你可以用npm start来建服务器,等同于node bin/www,如果你安装了supervisor,可以直接用supervisor bin/www来运行服务器。 ###工程结构### 这块儿改动挺大的,可以对比代码看一下,不必按照作者去改代码,保持原样即可。 ###路由控制### 这段看一下就好了,可以试着改一下,但是记得还原 ###搭建多人博客### ####路由规划#### 实际上4.x已经是在index.js里面规划路由就好了,不用向上一章那样各种修改,你想添加一个路由控制,直接在后面添加 router.get('/’, function(req, res) { });或者 router.post('/’, function(req, res) { });就好了 ###连接MongoDB### 需要在app.js引入express-session var session = require(‘express-session’); 然后添加: app.use(cookieParser());//这个已经有了就不用添加了 app.use(session({ //这个要放在app(flash())(后面会添加)之前,app(flash())要放在app.use('/’, routes);之前 secret: settings.cookieSecret, key: settings.db,//cookie name cookie: {maxAge: 1000 * 60 * 60 * 24 * 30},//30 days store: new MongoStore({ db: settings.db }) })); ####页面权限控制#### 这一块我感觉post前面可以不用判断是否登录吧? ##第3章 增加文件上传功能 ## express4.x在body-parse中间件里已经不在处理multipart/form-data,所以你们会发现req.files的files为undefined,请使用其他中间件,我用的是multer,在依赖中引入multer。在app.js中添加: var multer = require(‘multer’); app.use(multer({ dest: './public/images/’})); multer默认是保留后缀,并且自动删除了空文件的,所以路由控制代码如下: router.post('/upload’, function (req, res) { for (var i in req.files) { var target_path = ‘./public/images/’ + req.files[i].originalname; // 使用同步方式重命名一个文件 fs.renameSync(req.files[i].path, target_path); console.log(‘Successfully renamed a file!’); } req.flash('success’, ‘文件上传成功!’); res.redirect(‘/upload’); }); 这里有一个前面埋下的坑,第一章时作者建议我们建立一个启动app的文件,但是一定要把这个文件建立在根目录下,否则你上传图片会上传到启动app.bat的目录下。 ##第5章 增加编辑与删除功能 ## 本章遇到的问题是如果title是中文,编辑完之后跳的url最后是“乱码”,有人告诉url要两次编码再解码,如下: url=encodeURI(url); url=encodeURI(url); url=decodeURI(url); 确实有效,但是最后我发现url编码一次就行了,也无需解码。难道“乱码”问题是因为redirect会自动对url解码么,所以只要对中文编码一次就好了?求大神指教。

6 回复

一转眼竟然 express 都 4.8 了,没注意。

我还在用3.5…不忍直视

@macross2005 来来 我们一起研究4.8

@yuu2lee4 好,先关注着,下周开始看看。

版本变化太快了,买的书又废了

回到顶部