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