zoukankan      html  css  js  c++  java
  • 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框架一样,封装了一些复杂的东西,以提供简便易用的接口而已。

  • 相关阅读:
    tf.get_variable
    tf.Variable
    tf.placeholder
    conda命令详解
    linux查看程序运行时占用的内存
    ubuntu安装openssh-server
    sed命令
    二分查找
    vue简单使用
    斐波那契数列求解
  • 原文地址:https://www.cnblogs.com/moyiqing/p/express.html
Copyright © 2011-2022 走看看