摘要:被移除的方法和屬性被改變?yōu)閺?fù)數(shù)形式的方法名以下這些方法名被更改為了復(fù)數(shù)形式。在中,使用單數(shù)的方法名將會(huì)得到一個(gè)警告。在中,被它的駝峰命名版本所取代。在中,中會(huì)刪去端口號(hào),而在中,端口號(hào)會(huì)被保留。
前言
Express 5.0 仍處于alpha版中,但是我們還是想先來(lái)初窺一下新的express版本中將會(huì)有哪些改變,以及如何將你的應(yīng)用從Express 4 遷移至 Express 5。
Express 5 與Express 4 的區(qū)別,并有像之前從Express 3 更新至 Express 4 時(shí)的那樣非常巨大。但是,仍然還是有幾個(gè)API有了顛覆性的變化。這意味著你的Express 4 應(yīng)用在更新至Express 5 之后,將有可能不能運(yùn)行。
安裝想要使用alpha版的Express 5 ,你只需在你應(yīng)用的根目錄下運(yùn)行命令:
$ npm install [email protected] --save
完成了以上步驟之后,你便可以運(yùn)行你項(xiàng)目中的自動(dòng)化測(cè)試,來(lái)看看有哪些代碼運(yùn)行失敗了,然后根據(jù)下文列出的Express 5 的更新清單,來(lái)修復(fù)它們。(你的代碼應(yīng)該是有寫測(cè)試的吧。。)接著,根據(jù)測(cè)試的錯(cuò)誤信息,來(lái)實(shí)際運(yùn)行你的應(yīng)用,看看到底是發(fā)生了什么錯(cuò)誤。這些錯(cuò)誤應(yīng)該都是使用了Express 5不再支持的屬性和方法所導(dǎo)致的。
Express 5 的改變以下是Express 5 的改變清單。當(dāng)然,由于目前它還在一個(gè)alpha版,所以可能會(huì)有更多的變化。
被移除的方法和屬性:app.del()
app.param(fn)
被改變?yōu)閺?fù)數(shù)形式的方法名:以下這些方法名被更改為了復(fù)數(shù)形式。在Express 4 中,使用單數(shù)的方法名將會(huì)得到一個(gè)警告。而Express 5 則不再支持它們了:
req.acceptsCharset() -> req.acceptsCharsets().
req.acceptsEncoding() -> req.acceptsEncodings().
req.acceptsLanguage() -> req.acceptsLanguages().
app.param(name, fn)中name的前置冒號(hào)(:)app.param(name, fn)中name的前置冒號(hào)是為了向前兼容Express 3。在Express 4 中,使用前置了冒號(hào)的name會(huì)得到一個(gè)警告。而在Express 5 中,將會(huì)默默得忽略它,然后使用沒(méi)有前置冒號(hào)的name。
如果你遵循的是Express 4的文檔,這個(gè)改變不應(yīng)該影響到你的應(yīng)用。
req.param(name)這個(gè)方法的方法名非常具有歧義,并且在獲取已經(jīng)被刪除的數(shù)據(jù)時(shí)可能會(huì)有危險(xiǎn),所以它被移除了。你將必須從req.params,req.body或req.query來(lái)明確地獲取指定數(shù)據(jù)。
res.json(obj, status)Express 5 將不再支持方法res.json(obj, status)。取而代之的是,你可以通過(guò)status方法鏈?zhǔn)秸{(diào)用它,如:res.status(status).json(obj)。
res.jsonp(obj, status)Express 5 將不再支持方法res.jsonp(obj, status)。取而代之的是,你可以通過(guò)status方法鏈?zhǔn)秸{(diào)用它,如:res.status(status).jsonp(obj)。
res.send(body, status)Express 5 將不再支持方法res.send(obj, status)。取而代之的是,你可以通過(guò)status方法鏈?zhǔn)秸{(diào)用它,如:res.status(status).send(obj)。
res.send(status)Express 5 將不再支持status參數(shù)是數(shù)字的res.send(status)方法。取而代之的是,你可以使用res.sendStatus(status),它將會(huì)設(shè)置一個(gè)指定的HTTP響應(yīng)碼以及文字描述,如“Not Found”,“Internal Server Error”等等。
如果你需要向res.send()傳遞一個(gè)數(shù)字,那就給這個(gè)數(shù)字用引號(hào)包圍,來(lái)將其轉(zhuǎn)換為一個(gè)字符串,然后Express 5 將不會(huì)認(rèn)為你在使用舊的不再支持的方法。
res.sendfile()在Express 5 中,res.sendfile()被它的駝峰命名版本res.sendFile()所取代。
有所改變的方法和屬性: app.routerapp.router對(duì)象在Express 4中被移除了,但是在Express 5 中,它有回歸了。但是它與Express 3 中的不同,它只是一個(gè)對(duì)基本的Express router對(duì)象的引用,在你的應(yīng)用中,你不許要顯式的加載它。
req.host在Express 4中,req.host中會(huì)刪去端口號(hào),而在Express 5 中,端口號(hào)會(huì)被保留。
req.query在Express 4.7和Express 5 中,query parser接受false參數(shù)來(lái)禁用默認(rèn)的查詢字符串解釋。然后你可以使用自己的查詢字符串解釋邏輯代替之。
有所改進(jìn)的方法: res.render()對(duì)于所有的模板引擎,這個(gè)方法現(xiàn)在都會(huì)強(qiáng)制去使用它異步版本的編譯方法,來(lái)避免在使用支持同步編譯的模板引擎中可能會(huì)出現(xiàn)的bug。
結(jié)論我們已經(jīng)給了Express 5 中的所有改變的一個(gè)預(yù)覽,以及升級(jí)你的應(yīng)用的大致路徑。但是由于它還處于一個(gè)alpha階段,所以未來(lái)可能會(huì)有更多的變化。請(qǐng)保持關(guān)注StrongLoop。
原文鏈接https://strongloop.com/strongblog/moving-toward-express-5/
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/91555.html
摘要:前言這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑應(yīng)用的最佳實(shí)踐。潛在的攻擊者可以通過(guò)它們進(jìn)行針對(duì)性的攻擊。 前言 這將是一個(gè)分為兩部分,內(nèi)容是關(guān)于在生產(chǎn)環(huán)境下,跑Express應(yīng)用的最佳實(shí)踐。第一部分會(huì)關(guān)注安全性,第二部分最會(huì)關(guān)注性能和可靠性。當(dāng)你讀這篇文章時(shí),假設(shè)你已經(jīng)對(duì)Node.js和web開(kāi)發(fā)有所了解,并且對(duì)生產(chǎn)環(huán)境有了概念。 概覽 生產(chǎn)環(huán)境,指的是軟件生命循環(huán)中的某個(gè)階段。...
摘要:為應(yīng)用增加新的特性和處理新的情況可能都會(huì)改變文件的結(jié)構(gòu)。寫一個(gè)模板的最佳實(shí)踐是,不要在模板中處理數(shù)據(jù)。在上面這四個(gè)文件夾中,主要的測(cè)試代碼將是單元測(cè)試,這意味著你需要將被測(cè)試的代碼與應(yīng)用分離開(kāi)來(lái)。 前言 Node和Express并不嚴(yán)格要求它的應(yīng)用的文件結(jié)構(gòu)。你可以以任意的結(jié)構(gòu)來(lái)組織你的web應(yīng)用。這對(duì)于小應(yīng)用來(lái)說(shuō),通常是不錯(cuò)的,十分易于學(xué)習(xí)和實(shí)驗(yàn)。 但是,當(dāng)你的應(yīng)用在體積和復(fù)雜性上都...
世界上任何一個(gè)擁有用戶數(shù)據(jù)的 web 應(yīng)用都必須處理 sessions。作為一名開(kāi)發(fā)者,我們必須要知道它們是什么以及如何處理它們。在這篇文章中,我想要分享的是: session 是什么? session 如何存儲(chǔ)數(shù)據(jù)? 你如何決定存放 session 數(shù)據(jù)的位置? 在 sessions 工作時(shí),你必須意識(shí)到的安全性上的影響有哪些?在一些示例代碼中,我將會(huì)運(yùn)用?session npm modul...
閱讀 3717·2023-04-26 00:56
閱讀 2706·2021-09-30 10:01
閱讀 974·2021-09-22 15:30
閱讀 3934·2021-09-07 10:21
閱讀 1541·2021-09-02 15:40
閱讀 2774·2021-08-30 09:47
閱讀 1256·2021-08-16 10:57
閱讀 1874·2019-08-30 14:01