2

因为在vue.js仿饿了么app中,用到了express路由,所以就学习了express的简单使用,并且记录此文章,来加深自己的印象。

安装

安装并且将express保存到依赖列表里面

   npm install express --save 

只是安装不添加到依赖列表里面,省了--save即可

   npm install express

一个hello word实例

var express = require('express');
var app = express();
app.get('/user',function(req,res) {
  res.end('hello word');
})
var server = app.listen(3000, function () {
  var host = server.address().address; //ip地址
  var port = server.address().port;  //端口号
  console.log('Example app listening at', host, port);
});

上面的代码中引入了express,并且实例化了一个app变量,初始化了一个get请求是http://localhost:3000/user请求,这个请求返回的是hello word,这个是一个简单的路由

路由

路由是指如何定义应用的端点(URIs)以及如何响应客户端的请求。

app.METHOD(path, [callback...], callback),

  1. app 是 express 对象的一个实例,express()就是一个express的实例。

  2. METHOD 是一个 HTTP 请求方法,express定义了如下请求的方法:get, post, put, head, delete, options, trace, copy, lock, mkcol, move, purge, propfind, proppatch, unlock, report, mkactivity, checkout, merge, m-search, notify, subscribe, unsubscribe, patch, search, 和 connect。

  3. path 是服务器上的路径, 这个路径是我们自己定义的,即访问的url;可以是字符串,正则表达式。

          // get请求根路径
          app.get('/',function(req,res) {})
          // get请求根路径 /user
          app.get('/user',function(req,res) {})
          // 匹配以user结尾的。
         app.get('/.*user$/',function(req,res) {})
  4. callback 是当路由匹配时要执行的函数,callback可以有多个,callback的参数有req,res,当多个callback是有一个next参数的,如果只有一个callback可以省略next参数。

        app.get('/user/:id', function (req, res,next) {
            if(req.params.id==0){
              next('route')
            }
             next();
        },function (req,res) {
            res.send('Hello World!');
        });
        app.get('/user/:id', function (req, res) {
            res.end('Hello user!');
        });

next()表示执行下一个回调函数,next('route'):略过下面的回调函数直接执行下一个路由。上面的例子,当我们在页面输入http://localhost:3000/user/0,输出的是Hello user!,其他的都是输出res.send('Hello World!')

app.all()

app.all是一个特殊的方法,使用app.all方法,对于任何method的请求都会执行。

托管静态资源

app.use(express.static('js')); 

在当前目录下面有一个js文件,里面有一个index.js和router.js,我们启动服务的时候,可以直接访问http://localhost:3000/index.js,这就是express的托管静态资源

中间件

中间件(Middleware) 是一个函数,它可以访问请求对象(request object (req)), 响应对象(response object (res)), 和 web 应用中处于请求-响应循环流程中的中间件,一般被命名为 next 的变量。

应用级中间件

应用级中间件绑定到 app 对象 使用 app.use() 和 app.METHOD(), 其中, METHOD 是需要处理的 HTTP 请求的方法,例如 GET, PUT, POST 等等,全部小写。
例如:

   //定义中间件
   router.use(function timeLog(req, res, next) {
       console.log('Time: ', Date.now());
       next();
   });
   // 定义网站主页的路由
   router.get('/', function(req, res) {
       res.send('Birds home page');
   });
   // 定义 about 页面的路由
   router.get('/about', function(req, res) {
       res.send('About birds');
   })

上面的例子中,router.use定义了一个中间件,无论访问根路由和about路由,都会执行中间件,中间件通过 next() 方法将控制权交给下一个中间件或者路由。

路由级中间件

路由中间件和应用中间件一样,只是路由中间件绑定的是express.Router();使用 router.use() 加载。

 var app = express()
 var appData=require('../data.json');
 var seller=appData.seller;
 //定义路由中间件
 var appRouter=express.Router();
 
 appRouter.get('/seller',function(req,res){
   res.json({
     errno:0,
     data:seller
   })
 })
 //加载路由中间件
 app.use('/api',appRouter);

通过get方式访问 http://localhost:2000/api/seller,就能访问到返回的json对象,包含erron和data。

参考 http://www.expressjs.com.cn/s...


姜艳云
192 声望19 粉丝

引用和评论

0 条评论