express框架搭建

express框架搭建

先看看一段代码:

 1 var express = require('express');
 2 var partials = require('express-partials');
 3 var flash = require('connect-flash');
 4 var http = require('http');
 5 var path = require('path')
 6 var routes = require('./routes');
 7 var setting = require('./settings');
 8 var mongodb = require('mongodb');
 9 //connect-mongo use to store session
10 var mongoStore = require('connect-mongo')(express);
11 
12 var app = express();
13 
14 app.set('port', process.env.PORT || 3000);
15 app.set('views', __dirname + '/views');
16 app.set('view engine', 'ejs');
17 
18 //flash是用来存储临时变量的
19 app.use(flash());
20 //partials是用来解析视图模板的
21 app.use(partials());
22 //默认图标
23 app.use(express.favicon());
24 //请求参数的解析
25 app.use(express.bodyParser());
26 //http请求的改写
27 app.use(express.methodOverride());
28 //cookie解析
29 app.use(express.cookieParser());
30 
31 //开发环境下有日志功能
32 app.use(express.logger('dev'));
33 app.use(express.session({
34     secret: setting.cookieSecret,
35     store: new mongoStore({
36         db: setting.db
37     })
38 }));
39 
40 //app.use(routes(app));
41 //if use this type,you can detach the router in separate file.
42 app.use(app.routes);
43 
44 app.get('/', function(req, res, next){
45     res.render('index.ejs', {title:'ken blog'});
46 });
47 
48 app.use(express.static(path.join(__dirname, 'public')));
49 //or app.use(express.static(__dirname + '/public'));
50 
51 http.createServer(app).listen(app.get('port'), function(){
52     console.log('server listen on port:' + app.get('port'));
53 });
View Code

引入express是必须的,自不用说,为了能够创建一个Http服务器,我们当然也需要引入http模块。

var express = require('express');

var http = require('http');

var app = express();

下面就是配置的问题

先说说视图部分,需要设置视图的存放位置,还是渲染视图的引擎;

app.set('views','./views');

app.set('view engine', 'ejs');//想用jade也可以换成'jade'.只要你想。

接下来是几个常用中间件。

app.use(express.bodyParser());//用来解析请求体信息

app.use(express.cookieParser());//用来解析cookie信息,若需要保存session,则这个是必须添加的

app.use(express.methodOverride());//这个是用来重写http请求方法的,很多服务器不提供put,delete这样一些http方法,因此需要重写方法。

再来看看路由如何设置:

app.use(app.routes);

这样设置了之后,你就可以直接在这里写路由控制了,比如:

app.get('/', function(req, res, next){});

但还有另一种方式,能够让我们把路由拆分出来放在一个单独的文件中:

app.use(routes(app));

然后在route.js中代码如下:

1 module.exports = function (app) {
2      app.get('/', function(req, res){
3       });
4       return app.router;
5 }
View Code

当然还有一种更为推荐的方式来创建路由:

我们在server.js中写入以下代码:

1 app.use(app.router);
2  
3 // 路由会在user/的基础上
4 app.use('/user', require('./routes/user').middleware);
View Code

然后在routes/user.js中添加路由:

 1 var express = require('express');
 2  
 3 var router = module.exports = new express.Router();
 4  
 5 router.get('/:foo', function(req, res, next) {
 6     res.send(req.originalUrl + '\n');
 7 });
 8  
 9 router.post('/bar', function(req, res, next) {
10     res.send(req.originalUrl + '\n');
11 });
View Code

在最后,创建服务器:

http.createServer(app).listen(app.get('port') || 3000,function(){});

以上这些代码应该能够创建一个能够用的框架了。

或许我们会涉及到聊天室一类的项目中,因此需要用到TCP协议的socket接口,socket.io为我们提供了一套简单易用的方式,直接参考http://socket.io该站点就可以快速入门。

这里简单介绍:

服务器端socket代码如下:

require('socket').listen(8080);//在express中,你可以直接listen(app);

1 io.socket.on('connection', function(socket){
2   socket.emit('news', {name:'ken'};
3   socket.on('my envet', function(data){
4     console.log(data);
5   });
6 });
View Code

在客户端,也是简单的使用emit和on事件而已。

1 <script src="/socket.io/socket.io.js"></script>
2 <script>
3   var socket = io.connect('http://localhost');
4   socket.on('news', function (data) {
5     console.log(data);
6     socket.emit('my other event', { my: 'data' });
7   });
8 </script>
View Code

express框架给我们的代码书写提供了方便,不过我们让然需要去理解Nodejs的原生api,需要知道express的实现原理。express框架的生成,也就跟一些前端的js框架一样,封装了一些复杂的东西,以提供简便易用的接口而已。

原文地址:https://www.cnblogs.com/moyiqing/p/express.html