【基于node.js+express的web开发备忘】--nodejs v0.11.13 + express v4.2.0+mongodb v2.0.6

开发环境:nodejs v0.11.13 + express 4.2.0 + mongodb v2.0.6

这里nodejs、express、mongodb的安装省去10000字。。。看安装后的package.json文件中依赖的中间件:

"dependencies": {
    "express": "~4.2.0",
    "express-session": "~1.3.1",
    "mongodb": "~1.4.6",
    "connect-mongodb": "~1.1.5",
    "connect-multiparty":"~1.0.5",
    "crypto": "~0.0.3",
    "static-favicon": "~1.0.0",
    "morgan": "~1.0.0",
    "cookie-parser": "~1.0.1",
    "body-parser": "~1.0.0",
    "debug": "~0.7.4",
    "ejs": "~0.8.5"
  }

express 4.x.x已经去除connect,较express 2.x、express 3.x 一些功能的使用必须安装中间件才能正常使用。

这里简单介绍开发的环境中安装的中间件以及配置:

1、session功能

使用session功能可以采用内存存储,也可以中间件存储,比如:mongodb,需要的中间件:express-session/connect-mongodb,安装命令:

npm install express-session

npm install connect-mongodb

配置如下(已经和express2.x/3.x不一样了):

//采用connect-mongodb中间件作为Session存储
var session = require('express-session');
var Settings = require('./database/settings');
var MongoStore = require('connect-mongodb');
var db = require('./database/msession');

app.use(session({
    secret: Settings.COOKIE_SECRET,
    cookie: { maxAge: 600000 },
    store: new MongoStore({
     username: Settings.USERNAME,
     password: Settings.PASSWORD,
     url: Settings.URL,
     db: db})
}));

2、文件上传下载功能

需要中间件:connect-multiparty,安装命令:npm install connect-multiparty,配置如下:

app.use(multiparty({uploadDir:'./temp', keepExtensions:true}));

3、加密

需要中间件:crypto,安装命令:npm  install  crypto,使用可直接require("crypto");

 

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 multiparty = require('connect-multiparty');
//后端处理逻辑
var routes = require('./routes/index');
var users = require('./routes/users');

//采用connect-mongodb中间件作为Session存储
var session = require('express-session');
var Settings = require('./database/settings');
var MongoStore = require('connect-mongodb');
var db = require('./database/msession');

var app = express();
//设置监听端口
app.listen(1001);

//设置视图模版以及路径
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
//装载中间件
app.use(favicon());
app.use(logger('dev'));
app.use(bodyParser());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded());
//设置上传文件的临时存储目录
app.use(multiparty({uploadDir:'./temp', keepExtensions:true}));

app.use(cookieParser());
//session配置
app.use(session({
    secret: Settings.COOKIE_SECRET, 
    cookie: { maxAge: 600000 },
    store: new MongoStore({
    	username: Settings.USERNAME,
    	password: Settings.PASSWORD,
    	url: Settings.URL,
    	db: db})
}));
//静态文件存放的根路径
app.use(express.static(path.join(__dirname, 'public')));
//请求路由转发设置
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;

 

var Settings = require('./database/settings');引入的settings文件:

module.exports = {
	COOKIE_SECRET: 'TShare', 
	URL: 'mongodb://127.0.0.1:27017/TShare',
	DB: 'TShare', 
	HOST: '127.0.0.1',
	PORT: 27017,
	USERNAME: 'TShare',
	PASSWORD: 'TShare'
};


var db = require('./database/msession');引入的msession文件:

var Settings = require('./settings');
var Db = require('mongodb').Db;
var Server = require('mongodb').Server; 
var db = new Db(Settings.DB, new Server(Settings.HOST, Settings.PORT, {auto_reconnect:true, native_parser: true}),{safe: false});

module.exports = db;


以上仅作为备忘与分享,若有错误,请大家指正或讨论!

 

你可能感兴趣的:(web开发,express,nodejs博客案例,nodejs开发环境搭建,connect-mongodb)