Express Starter
Express Starter
- use express 4.*
- use jade
- use mongoose
- use config.json
- use session
- use bluebird for promise/A+
- use mocha for test
- add startmongodb.sh && start.sh
- add pm2 for deploy
- use supervisor for live reload
- add multer(2015.5.12 07:09)
- plain post(2015.5.12 07:09)
- add cors(2015.5.12 07:19)
- add mongodb session store (2015-05-18 0:41:49)
todo
- add queue(https://github.com/Automattic/kue)
- add is_js
- add log4js
- add require-directory
- add bcrypt
- add ueditor
目录说明
- m (增加models目录)
- v (使用默认的views)
- c (使用routes路由 + actions具体业务逻辑)
- bin 是系统可执行脚本存放位置目录
- test 是默认测试目录
- config 是配置项目录,比如db信息等
- middleware 是express中间件目录,默认有一个检查session的中间件
pm2 tips
启动项目
sudo pm2 start app.js -i max --name 'express-starter'
查看状态
sudo pm2 status
停止所有
sudo pm2 stop all
技术点
multer上传
express 4 官方上传中间件
https://github.com/expressjs/multer
var multer = require('multer');
var app = express();
app.use(multer({
dest: './uploads/',
rename: function (fieldname, filename) {
return filename.replace(/\W+/g, '-').toLowerCase() + Date.now()
}
}))
plain post
3种不同的post
- Post with x-www-form-urlencoded
- Post with form-data
- Post with raw
头2种express是内置处理的,第三种要自己处理
var app = express();
app.use(function(req, res, next){
if (req.is('text/*')) {
req.text = '';
req.setEncoding('utf8');
req.on('data', function(chunk){ req.text += chunk });
req.on('end', next);
} else {
next();
}
});
测试方法
echo -n 'post raw json'
curl -d "{"a":"1","b":"2","c":{"a":"1","b":"2"}}" http://127.0.0.1:3001/users/post
更多见 https://github.com/i5ting/node-http
支持跨域cors
// 支持跨域
app.use(require('cors')());
session
https://github.com/kcbanner/connect-mongo
项目使用mongoose做操作mongodb的库,所以这里直接复用其连接即可
见app.js里
var session = require('express-session')
var MongoStore = require('connect-mongo')(session);
var mongoose = require('mongoose');
....
var half_hour = 3600000 / 2;
app.use(session({
store: new MongoStore({ mongooseConnection: mongoose.connection }),
secret: 'gupjia.ng@me',
resave: false,
saveUninitialized: true,
cookie: {
secure: false,
maxAge: half_hour
}
}));
安装mongoose经常会报错的解决方案
问题在bson
原因是mongoose依赖mongodb,mongodb里依赖mongodb-core,mongodb-core依赖bson
解决方案
[sudo] npm install -g mongooseinstaller
mi
都是比较简单的一些经典技术栈,有兴趣的一起玩
https://github.com/i5ting/express-starter
欢迎关注我的公众号【node全栈】
7 回复
不错
@leapon 昨天竟然有2个star,哇哈哈
@i5ting 更不错了 :)
小白跟着学习学习~
启动pm2 用sudo
说明你pm2 没有安装正确
@struCoder 请指教
add bson && mongodb as session store