做者 | Jesksonhtml
來源 | 達達前端小酒館前端
Express服務器開發node
建立Express應用程序,Express路由,pug視圖模板的使用web
讓咱們來建立Express應用程序,Express是一個Node.js Web應用框架,它很強大,能夠爲用戶建立各類Web應用和HTTP工具,使用Express框架能夠搭建一個完整功能的網站。算法
能夠用中間件來響應HTTP請求,能夠定義路由表用於執行不一樣的HTTP請求,能夠向模板傳參數來動態渲染HTML頁面。express
命令行安裝Express框架:npm
cnpm install express --save
Express框架安裝在node_modules目錄中,而後須要一塊兒安裝以下模塊:json
body-parser是node.js的中間件,能夠處理JSON,Raw,Text,URL編碼的數據,cookie-parser是一個解析Cookie的中間件,而後經過req.cookies能夠獲取傳過來的Cookie,並轉爲對象。segmentfault
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){ })
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類型
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路由,由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全棧技術領域,數據結構與算法、網絡原理等通俗易懂的呈現給小夥伴。謝謝支持,承蒙厚愛!!!
若本號內容有作得不到位的地方(好比:涉及版權或其餘問題),請及時聯繫咱們進行整改便可,會在第一時間進行處理。
這是一個有質量,有態度的博客