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