-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp.js
143 lines (120 loc) · 2.97 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
135
136
137
138
139
140
141
142
143
/**
* Module dependencies.
*/
/**
* 定义库的路径(全局变量)
*/
Object.defineProperty(global, 'lib', {
get: function(){
return require("" + __dirname + path.sep + confapp.libs);
}
});
/**
* 添加参照
*/
var express = require("express")
, http = require("http")
, i18n = require("i18n")
, path = require("path")
, store = require("connect-mongo")(express)
, confdb = require("config").db
, confsession = require("config").session
, confapp = require("config").app
, confcookie = require("config").cookie
, routes = require("./routes")
, middleware = require('./core/middleware');
/**
* 国际化
*/
i18n.configure({"locales": ["en", "ja", "zh"]
, "register": global
, "updateFiles": false
});
i18n.setLocale("zh");
var app = express();
app.configure(function(){
app.set("port", process.env.PORT || 3000);
app.set("views", __dirname + "/views");
app.set("view engine", "html");
/**
* Middleware
* 生成标准favicon.ico,防止favicon.ico的404错误
*/
// app.use(express.favicon());
/**
* Middleware
* 记录Access log和Error log
*/
app.use(express.logger("dev"));
/**
* Middleware
* 压缩response data为gzip
*/
// app.use(express.compress());
/**
* Middleware
* 包含json(), urlencoded(), multipart()三个middleware
*/
app.use(express.bodyParser({"uploadDir": confapp.tmp}));
/**
* Middleware
* 用于模拟DELETE and PUT方法
* 可以在form里放在<input type="hidden" name="_method" value="put" />来模拟
*/
app.use(express.methodOverride());
/**
* Middleware
* 解析cookie
*/
app.use(express.cookieParser(confcookie.secret));
/**
* Middleware
* 提供基于cookie的session
*/
app.use(express.session({
"secret": confsession.secret
, "key": confsession.key
, "cookie": {"maxAge": confsession.timeout * 60 * 60 * 1000}
, "store": new store({"db": confdb.dbname, "host": confdb.host, "port": confdb.port})
})
);
/**
* Middleware
* CSRF支持。需要在设定csrftoken的前面。
*/
app.use(express.csrf());
/**
* 静态资源路径
*/
app.use(express.static(__dirname + "/public"));
/**
* 系统定义
*/
app.use(middleware.authenticate); // 认证
app.use(middleware.csrftoken); // 生成CsrfToken
app.use(middleware.lang); // 设定语言
app.use(middleware.parseError); // 异常处理
app.use(middleware.timeout); // 设定超时
});
/**
* 使用ejs模板
*/
app.engine("html", require("ejs").__express);
/**
* 以开发模式启动是有效的设定放在这里
*/
app.configure("development", function(){
app.use(express.errorHandler());
});
/**
* route
*/
// routes.guidingMaster( app );
routes.guidingApi( app );
routes.guidingWebsite( app );
/**
* 启动服务
*/
http.createServer(app).listen(app.get("port"), function(){
console.log("Express server listening on port " + app.get("port"));
});