express學習筆記

由於在vue.js仿餓了麼app中,用到了express路由,因此就學習了express的簡單使用,而且記錄此文章,來加深本身的印象。html

安裝

安裝而且將express保存到依賴列表裏面vue

npm install express --save

只是安裝不添加到依賴列表裏面,省了--save便可web

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)以及如何響應客戶端的請求。express

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

  1. app 是 express 對象的一個實例,express()就是一個express的實例。json

  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。api

  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

    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...

相關文章
相關標籤/搜索