Express伺服器開發

  • 2019 年 12 月 20 日
  • 筆記

作者 | Jeskson

來源 | 達達前端小酒館

Express伺服器開發

創建Express應用程式,Express路由,pug視圖模板的使用

Express簡介:

讓我們來創建Express應用程式,Express是一個Node.js Web應用框架,它很強大,可以為用戶創建各種Web應用和HTTP工具,使用Express框架可以搭建一個完整功能的網站。

Express框架的優點:

可以用中間件來響應HTTP請求,可以定義路由表用於執行不同的HTTP請求,可以向模板傳參數來動態渲染HTML頁面。

命令行安裝Express框架:

cnpm install express --save

Express框架安裝在node_modules目錄中,然後需要一起安裝如下模組:

body-parser是node.js的中間件,可以處理JSON,Raw,Text,URL編碼的數據,cookie-parser是一個解析Cookie的中間件,然後通過req.cookies可以獲取傳過來的Cookie,並轉為對象。

multer是node.js的中間件,用於處理enctype="multipart/form-data"的表單數據。

cnpm install body-parser --save  cnpm install cookie-parse --save  cnpm install multer --save

讓我們來看看express框架的版本號:

cnpm list express

創建第一個Express框架實例

目的為了輸出:「hello」,命名:express_demo.js文件

// 引入node模組  const express = require('express');    // 創建express程式  const app = express();    // 添加HTTP路由  app.get('/', function(request, response){   // 輸出響應消息   response.send('hello express');  });    // 啟動HTTP伺服器  app.listen(8080, function(){   console.log('express app');  });

執行項目:

node express_demo.js

然後就可以用http://127.0.0.1:8080

express框架使用request對象和response對象來處理請求和響應的數據:

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

request對象為HTTP請求

req.app

為callback,回調函數外部文件,利用req.app訪問express的實例

req.baseUrl

獲取當前安裝的URL路徑

req.body/req.cookies

為獲得「請求主體」

req.hostname/req.ip

獲取主機名,ip地址

req.originalUrl

獲取原始請求URL

req.params

獲取路由的參數

req.path

獲取請求路徑

req.protocol

獲取協議類型

req.query

獲取URL的查詢參數

req.route

獲取當前匹配的express路由

req.subdomains

獲取子域名

req.accepts()

檢查可接受請求的文檔類型

req.get()

獲取指定的HTTP請求頭

req.is()

判斷請求頭Content-Type的Mime類型

response對象為HTTP響應

res.app

為callback,回調函數外部文件,利用res.app訪問express的實例

res.append()

追加指定HTTP請求頭

res.set()

在res.append()後重置之前設置的請求頭

res.clearCookie()

清除Cookie

res.download()

傳送指定路徑的文件

res.get()

返回指定的HTTP請求頭

res.json()

傳送json響應

res.jsonp 傳送jsonp響應

res.location() 只設置響應的LocationHTTP請求頭,不設置狀態碼或者close response

res.redirect() 設置響應的LocationHTTP請求頭,並且設置狀態碼302

res.send() 傳送HTTP響應

res.status() 設置HTTP狀態碼

res.type() 設置Content-Type的MIME類型

express路由

express路由,由URI,HTTP請求和若干個句柄組成。

// 引入node模組  const express = require('express');    // 創建express程式  const app = express();    // 添加http路由  app.get('/',function(request,response) {   // 輸出響應消息   response.send('hello dashucoding');  });    app.get('/users', function(req,res) {   // req , res   res.send('user');  });    // 啟動HTTP伺服器  app.listen(8080, function(){   console.lo('express app');  });

GET 請求一個指定資源的表示形式,只用於獲取數據

POST 用於將屍體提交到指定的資源

HEAD 請求一個與GET相同的響應,但沒有響應體

PUT 用於請求有效載荷替換目標資源的所有當前表示

DELETE 刪除指定的資源

CONNECT 建立一個由目標資源標識的伺服器的隧道

OPTIONS 用於描述目標資源的通訊選項

PATCH 用於對資源應用部分修改

app.get('/about',function(req,res){  res.send('about');  });    app.get('/ab?cd',function(req,res){  res.send('ab?cd');  }    app.get('/ab(cd)?e',function(req,res){  res.send('ab(cd)?e');  });

路由句柄,為請求處理提供多個回調函數,next('route')方法

let d1 = function(req,res,next){   console.log('1');   next();  };    let d2 = function(req,res,next){   console.log('2');   next();  });    let d3 = function(req,res,next){   console.log('3');   next();   });     app.get('/', [d1,d2]);

next用於執行下一個回調函數,next('route')用於執行下一個相同路由。

// 引入node模組  const express = require('express');  // 創建express程式  const app = express();  // 添加http路由  app.get('/', function(request, response){  // 輸出響應消息  response.send('hello');  });  app.get('/users', function(req,res){  res.send('user');  });    // 動態  app.get('/users/id', function(req,res){  let id = req.params.id;  // 返迴響應  res.send('id='+id);  });    // 啟動HTTP伺服器  app.listen(8080,function(){  console.log('expresss app');  });    const express = require('express');  const app = express();  app.get('/', function(request, response){  response.send('hello');  });  app.get('/users',function(req,res){  res.send('users');  });  app.param('id',(req,res,next)=>{   console.log('hello');   if(req.params.id==='1'){   next();   }else{   res.sendStatus(404);   }   });     app.get('/users/:id',(req,res)=>{   res.send('hello');   });     // 啟動伺服器   app.listen(8080,function(){    console.log('express');   });

pug視圖模板

命令行下載:

npm install pug

pug.compile()將pug程式碼編譯成一個JavaScript函數。

app.js    const express = require('express');    const app = express();    // 配置視圖模板  app.set('view engine', 'pug');  app.set('views', './views');    // 添加HTTP路由  app.get('/', function(request, response){  response.render('index.pug');  // 輸出響應消息,載入並解析index.pug文件  });    app.get('/users',function(req,res){  res.render('users.pug',{  title:'user',  users:[  {id:1,name:'張三',age:18}  ]  });  });  // 啟動HTTP伺服器  app.listen(8080,function(){  console.log('express');  });

users.pug:

doctype html  html  head  meta(charset="utf-8")  title #{title}  body  #app   for user in users   div   p id=#{user.id}   p name=#{user.name}   p age=#{user.age}    pug.render()模板函數:    const pug = require('pug');    console.log(pug.renderFile('template.pug',{  name:'dada'  });

執行pug.renderFile()函數,會把編譯出來的函數自動儲存到內部快取中

作者Info:

【作者】:Jeskson 【原創公眾號】:達達前端小酒館。 【轉載說明】:轉載請說明出處,謝謝合作!~

大前端開發,定位前端開發技術棧部落格,PHP後台知識點,web全棧技術領域,數據結構與演算法、網路原理等通俗易懂的呈現給小夥伴。謝謝支援,承蒙厚愛!!!