http://www.expressjs.com.cn/
1. 中間件
①掛載中間件的函數:app.use
var http = require('http');
var express = require('express');
var app = express();
使用自定義中間件
app.use('/',function(req , res , next){
console.log(‘這是自定義中間件’)
next(); 調用next表示執行后續的中間件代碼
});
使用static中間件加載靜態資源
app.use('/', express.static(__dirname + "/statics"));
app.get('/index', function(req, res) {
res.send("hello browser")
res.end();
})
http.createServer(app).listen(3000,function(err) {
if(err) throw err;
console.log('服務器連接成功');
})
安裝中間件,npm install body-parser –save
使用中間件:
如果express是4.0以下版本需要掛載在express后面使用express.bodyParser( )
如果express是4.0以上版本,可以直接使用bodyParser( )
② 基礎中間件介紹
(1)static靜態資源處理中間件
(2)logger獲取瀏覽器基本信息中間件
(3)bodyParser通過post方法提交的數據解析中間件
(4)query通過get方法提交的數據解析中間件
(5)cookieParser用戶狀態保存cookie解析中間件
(6)session啟用session管理用戶狀態中間件
(7)favicon網站圖標處理中間件
2. express路由
路由指如何定義應用的端點,以及如何響應客戶端的請求(通俗的講就是通過制定不同的路徑,調用對應方法處理用戶的請求)
路由是由一個URL、HTTP請求(GET、POST等)和若干個句柄組成
路由中的URL路徑支持正則表達式的方式,例如:/abc?123,表示c可有可無
路由的鏈式編程:
app.route(‘/parma’).get(function(req,res,next){}).post(function(req,res,next){})
表示相同路徑下不同請求方式的訪問
① req參數的常用屬性
app.get('/index', function(req, res) {
console.log(req.baseUrl); 掛載路由的路徑,以根路徑為標准
console.log(req.hostname);
console.log(req.ip); 本機的ip地址
console.log(req.path); 此處為/index
console.log(req.protocol); 傳輸協議,一般為http
console.log(req.query); 地址欄url中傳輸的參數
console.log(req.route); 路由對象
console.log(req.body); 以post方法提交的數據
console.log(req.cookies); 瀏覽器中存儲的cookie
console.log(req.signedCookies); 瀏覽器中已簽署的cookie,及已經加密過的cookie app.use(cookieParser(“secret”))
res.send("hello browser")
res.end();
})
② req參數的常用方法
(1)get(field)獲取請求頭中對應名稱的屬性
(2)is(type)判斷是否有指定的mime類型,Content-Type
(3)param(name)獲取指定名稱的參數值(post,get均可)
③文件上傳插件busboy
④ res參數的常用屬性
(1)app表示express的應用對象
(2)headersSent表明是否發送過數據給響應對象,是一個boolean值
(3)Locals本地變量
⑤ res參數的常用方法
(1)set(key,value)設置響應頭信息
(2)append(key,value)在響應頭中追加數據
(3)cookie(name,value,[option])設置cookie
(4)clearCookie(name,[option])清除指定的cookie
(5)download(path,filename,fn)下載文件
(6)end(data,encoding)結束文本數據的輸入
(7)get(field)獲取響應頭中對應的屬性值
(8)json(body)發送json字符對象
(9)location(path)指定網站地址
(10)redirect(status,path)重定向到指定的路徑
(11)render(view,locals,callback)渲染指定的視圖
(12)type(“.html”)設置傳遞給瀏覽器文件的響應mime類型Content-Type
(13)sendStatus(302)設置狀態碼為302,重定向,加載location中的地址
(14)writeHead(302,{location:”http://www.baidu.com/”})設置狀態碼為302,且加載location中的地址,頁面跳轉到百度
(15)send(data)可以傳遞多種數據類型,但是每個路由中只能使用一次,且不能和sendStatus等帶有send標識的方法同用
(16)write(data)傳遞數據
(17)end(data)響應結束標識方法
(18)download(“path” , setname , fn)下載文件
(19)sendFile(“path”)發送文件,此處為絕對路徑
3. ejs模板引擎
簡單高效的模板語言,通過數據和模板,可以生成HTML標記文本
ejs特點:
(1)快速編譯和渲染
(2)簡單的模板標簽
(3)自定義標記分隔符
(4)文件的包含
(5)支持瀏覽器端和服務器端
(6)模板靜態緩存
(7)支持express視圖系統
① ejs成員函數
(1)Render(str,data,[option]):直接渲染字符串生成HTML
str:需要解析的字符串模板
data:數據
[option]:配置選項
(2)Compile(str ,[option]):編譯字符串得到模板函數
str:需要解析的字符串模板
[option]:配置選項
[option]中的相關參數可以查閱文檔了解使用方法
② ejs常用標簽
(1)<% %>流程控制標簽
(2)<%= %>輸出標簽(原文輸出HTML標簽)
(3)<%- %>輸出標簽(HTML會被瀏覽器解析)
(4)<%# %>注釋標簽
(5)%對標記轉義
(6)-%>去除沒有意義的空格
③ ejs1中的過濾器(查看文檔了解使用方法)
