-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
134 lines (115 loc) · 3.7 KB
/
app.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
var express = require('express');
var session = require('express-session');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
//路由
var routes = require('./controller/index');
var users = require('./controller/users');
var post = require('./controller/post');
var login= require('./controller/login');
var postNew = require('./controller/post-new');
var logout = require('./controller/logout');
var register = require('./controller/register');
//静态资源
var staticRes = require('./config').lib;
var app = express();
//视图模板引擎
app.set('views', path.join(__dirname, 'views'));//view视图文件
app.set('view engine', 'ejs');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
// app.use(logger('dev'));
app.use(logger('combined', {
skip: function (req, res) { return res.statusCode < 400 }
}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: false}));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));//静态资源文件
app.use(session({
secret: 'the cake is a lie',
cookie: {
maxAge: 60000000//session过期毫秒数
},
resave: true,
saveUninitialized: true
}));
app.use(function(req, res,next){//设置cookie/session
//cookie 示例
// if(req.cookies.isVisit){
// console.log(req.cookies);
// console.log('欢迎再次光临');
// }else{
// res.cookie('isVisit',1,{maxAge: 60*1000});
// console.log('欢迎再次光临');
// }
//session示例
if(!req.session.user){
req.session.user = {
username: null,
email: null,
login: false
};
}
// 向页面输出登录状态
res.locals.user = req.session.user;
next();
});
//给每个页面输出静态资源
app.locals.staticRes = staticRes;
app.use(function (req, res, next) {
// [测试]是否能将数据缓存在process,[测试结果]可以
if(req.session.user.login){
if(!process.name) {
process.name = {length: 0};
}
if(Object.keys(process.name).indexOf(req.session.user.id) === -1){
process.name['length'] += 1;
process.name[req.session.user.id] = req.session.user.username;
}
console.log('######################');
console.log('当前用户连接数:%d',process.name['length']);
// 输出将用户信息挂载到process对象上对内存占用是否有显著影响,若无则考虑将数据库读取的数据挂载上去
console.log('当前内存使用:%s', parseInt(process.memoryUsage().heapUsed)/(1024*1024),'MB');
}
next();
});
// 设置路由
app.use('/', routes);
app.use('/users', users);
app.use('/post', post);
app.use('/login', login);
app.use('/post-new', postNew);
app.use('/logout', logout);
app.use('/register', register);
// 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;