1+ /*
2+ * 应用程序的启动(入口)文件
3+ * */
4+ var express = require ( 'express' ) ;
5+ var swig = require ( 'swig' ) ;
6+ var moogoose = require ( 'mongoose' ) ;
7+ var bodyParser = require ( 'body-parser' ) ;
8+ var Cooikes = require ( 'cookies' ) ;
9+
10+ var User = require ( './models/User' ) ;
11+
12+ //创建app应用 => Node JS http.createServer();
13+ var app = express ( ) ;
14+
15+ //设置静态文件托管
16+ app . use ( '/public' , express . static ( __dirname + '/public' ) ) ;
17+
18+ //配置应用模板
19+ //定义当前应用所使用的模板引擎
20+ //第一个参数:模板引擎的名称,同时也是模板文件的后缀,第二个参数表示用于解析处理模板内容的方法。
21+ app . engine ( 'html' , swig . renderFile ) ;
22+ //设置文件存放的目录,第一个参数不能动,第二个参数是模板目录
23+ app . set ( 'views' , './views' ) ;
24+ //注册所使用的模板引擎,第一个不能动,第二个和app.engine定义的第一个参数相同
25+ app . set ( 'view engine' , 'html' ) ;
26+ //设置不缓存
27+ swig . setDefaults ( { cache : false } ) ;
28+
29+ //bodyparser设置
30+ app . use ( bodyParser . urlencoded ( { extended : true } ) ) ;
31+
32+ //cookies设置
33+ app . use ( function ( req , res , next ) {
34+ req . cookies = new Cooikes ( req , res ) ;
35+
36+ //解析用户cookie信息
37+ req . userInfo = { } ;
38+ if ( req . cookies . get ( 'userInfo' ) ) {
39+ try {
40+ req . userInfo = JSON . parse ( req . cookies . get ( 'userInfo' ) ) ;
41+ // console.log(User.findByID(req.userInfo._id));
42+ //获取当前登录用户的类型,是否是管理员
43+ User . findById ( req . userInfo . _id ) . then ( function ( userInfo ) {
44+ req . userInfo . isAdmin = Boolean ( userInfo . isAdmin ) ;
45+ next ( ) ;
46+ } ) ;
47+
48+
49+ } catch ( e ) {
50+ console . log ( e ) ;
51+ next ( ) ;
52+ }
53+ } else {
54+ next ( ) ;
55+ }
56+ // console.log(req.cookies.get('userInfo'));
57+
58+
59+ } ) ;
60+
61+ /*
62+ 根据不同的功能划分模块
63+ */
64+
65+ app . use ( '/admin' , require ( './routers/admin' ) ) ;
66+ app . use ( '/api' , require ( './routers/api' ) ) ;
67+ app . use ( '/' , require ( './routers/main' ) ) ;
68+
69+
70+ //连接数据库
71+ moogoose . connect ( 'mongodb://localhost:27017/blog' , function ( err ) {
72+ if ( err ) {
73+ console . log ( '数据库连接失败' ) ;
74+ } else {
75+ console . log ( "数据库连接成功" ) ;
76+ //监听http请求
77+ app . listen ( 8081 ) ;
78+ }
79+ } ) ;
80+
81+
82+
83+ //用户发送http请求 -> url -> 解析路由 -> 找到匹配的规则 -> 执行绑定函数,返回对应内容
84+ //public -> 静态 -> 直接读取指定目录下的文件
85+ //动态 -> 处理业务逻辑,加载模板,解析模板 -> 返回数据
0 commit comments