摘要:原文譯者如果你曾經去過一個坐下來就餐的餐廳,那么你可以了解的基礎知識。而且由于缺少路徑,它將在每個請求上運行。這就是路由的來源。到目前為止,你已經雇傭了一位經理,在接受客戶請求之前定義了要做的事情,并且確定如何處理特定的客戶請求。
原文:Going out to eat and understanding the basics of Express.js
譯者:neal1991
welcome to star my articles-translator , providing you advanced articles translation. Any suggestion, please issue or contact me
LICENSE: MIT
如果你曾經去過一個坐下來就餐的餐廳,那么你可以了解 Express 的基礎知識。 但是,如果你剛剛開始構建你的第一個 Node.js 后端......你可能并不會很順利。
是的 - 如果你曾經有過 JavaScript 經驗,學習 Node 肯定更容易。 但是,在構建后端時面臨的挑戰與在前端使用JavaScript 時所面臨的挑戰完全不同。
當我學習Node時,我選擇了困難的方式。 我一遍又一遍地學習電子書,寫作教程和視頻,直到我終于明白我為什么要做我正在做的事情。
有一個更簡單的方法。 我打算用一個餐館的比喻來解釋你的第一個應用程序的四個關鍵部分。 Express.js 是一個組織你的代碼的流行框架,我會為任何初學者推薦它。 稍后我會進一步解釋。
下面是我們將會涉及到的四個關鍵部分:
The require statements
Middleware
Routing
App.listen()/ Starting the server
在這個比喻中,你是一個餐館老板,希望雇用一個總經理 - 創建所有流程并且進行管理,這樣餐廳就可以順利運行,客戶也就快樂了。
下面是接下來部分的預覽:
最后,你將會理解基本 Express app 的每個部分的功能。
步驟1: 雇傭經理 (require statements)在這個例子中,你是餐館老板。 而且你需要聘請專家來管理你的新餐廳的日常運作。 你當然不是專家,你不能把它交給服務員和廚房去搞清楚。
如果你想經營一家高效安全的餐廳,你需要有人來保證你的員工以最高的效率工作。 Express 就是新的經理。
第一部分非常簡單。 與其他 NPM 軟件包一樣,你需要使用 npm 安裝 express 模塊,然后使用 require statement 來加載模塊。
不像其它的許多 NPM 包,你也需要使用這行:
const app = express();
這是因為你需要一個變量來保存你的新的 Express 應用程序。 Express 不是 Node 的默認部分。
步驟二: 在餐廳做決定 (middleware)讓我們在這停一下。餐廳里最常見的例程有哪些?我們腦海中立馬出現了3個:
給新顧客安排座位
接受食物訂單
在用餐結束進行確認
對于每一個例程,都需要進行一系列的進程才能執行行動。比如,在你給顧客安排座位之前,你需要知道:
他們是不是穿了襯衫和鞋子(以及褲子)?否則,他們不能被安排座位。
如果他們想坐在吧臺那里,他們是否已經有21歲(如果你在美國的話)
這不是海灘酒吧! 同樣,在你的代碼中,你需要驗證請求是否具有某些標準,然后才能繼續。 例如,如果有人嘗試登錄到你的網站:
他們是否具有賬戶?
他們是否輸入了正確的密碼?
這是 middleware 概念的來源。Middleware 功能允許你對任何傳入的請求采取行動,并在發回響應之前對其進行修改。
在你的餐廳,你需要一系列的規則來決定你是否應該接待來訪的人。 比方說,一對夫婦走進你的餐廳。 在給他們一張桌子之前,你有一條規則:他們穿著襯衫和鞋子嗎?
首先,你從app.use()開始。這意味著這些僅僅是下一個路線需要應用的規則。它們不是 GET,POST,PUT或DELETE。
在第四行,你有一個匿名函數,參數 req,res 和 next。對于這個代碼塊的目的,你只是檢查請求(req),看它是否有襯衫和鞋子。
你最后還需要使用next()函數,因為你只是在這里驗證服裝。之后,在路線中,你將允許客人獲得實際的桌子。
在第五行和第六行,你檢查他們是否有襯衫和鞋子。
而在第7-9行中,只有兩者兼而有之才行。
上面的代碼塊缺少一個重要的事情:一個路徑。這是請求中包含的特定字符串。而且由于缺少路徑,它將在每個請求上運行。
你可以想象?當顧客進入餐館...點了食物...要求支票...員工將被迫在他們上下看他們確定他們穿衣服!這是一個快速停業的辦法。
所以,我們在上面的例子中改變第4行。 現在,我們只會在用戶請求“/ table”路徑時運行這個代碼。
完整的解釋:
步驟3: 執行常見的例程 (路由)讓我們繼續就座的例子。 到目前為止,我們只知道如何驗證某人是否應該就做。 但是我們實際上并不知道如何把他們指引到桌子旁邊并且就坐。
這就是路由的來源。路由允許我們根據路徑編寫具體的行動。 選項是 GET,POST ,PUT 和 DELETE,但現在我們將重點介紹 GET 和 POST。
在餐廳的環境下,我們需要創建一個 GET 請求,以便選擇一個特定的桌子并安排客人就做。 GET 不會修改或添加新數據到你的數據庫。 他們只是檢索基于特定參數的信息。
在這種情況下,假設你需要創建一個程序來安排兩個派對。 2號來自客戶的要求。
好的,在我解釋之前:是的,這只是在最后發送信息。 實際上還沒有找到一個具體的表格來給客戶安排座位。 我需要在一個數組中搜索一個打開的表格,這涉及到更多的背景故事......這超出了本教程的范圍。
在第12行中,我們定義了當賓客請求"table"路由時查找表的過程。 就像上面的中間件示例一樣,我們有可用的請求和響應參數。 它也有一個參數,金額。 在這個例子中,這是兩個。
事實上,第12行函數聲明之后的所有內容在技術上都是middleware,因為它修改了用戶請求。 你會看到圖中的結尾。
在第13行中,我們從請求對象的參數中訪問聚會中的人數。 由于請求來自用戶,所以沒有聲明任何地方,我們沒有任何前端代碼。 所以如果這是一個真正的應用程序,請求可能如下所示:
req = { params: { amount: 2; } }
在第13行中,我們的 party 變量訪問請求中的 params 對象的 amount 屬性。
最后在第14行,我們發送響應給客戶:我們正在尋找合適的桌子。
這是一次很多。 下面一張圖表:
步驟3.5: 讓你的餐廳有效率 (路由)現在您可以追蹤從請求到響應的完整路徑。 但是,隨著你的應用程序的規模不斷擴大,你將不希望多帶帶為每條路由編碼規則。 你會發現一些路由共享相同的規則,所以你需要找到一種方法來將一組規則應用到多個路由。
就座位而言,您可以將你的客戶安置在吧臺或餐桌旁。 他們有襯衫和鞋子的共同規則,但是在酒吧里坐著要求每個人都超過 21歲。
而且,在服務客戶方面,你需要使用稍微不同的程序來供應開胃菜,主菜和晚餐。 但是,這三條路線也有很多共同之處。
這是路由器進來的地方。路由器讓你分組你的路由,這樣你就可以創建通用的規則。
我們需要創建 middleware 來覆蓋這些情況。 現在我會將考慮到上面的就座案例,對上面的代碼進行重寫。
這是完整的代碼片段:
我們的路由器。
在第6行和第14行,我們現在使用seatingRouter.use()來代替app.use()來表示這個中間件只與seatRouter路由有關。
最后,在第21行中,我們添加了更多的中間件,以顯示每個座位路由器以“/ seating”開頭。 所以,如果有人要求在酒吧坐一個座位,完整的路徑是"/ seating / bar",這可能會有點不合理,因為當你在第4行創建路由器時,你可能會預期路徑被定義。 這很正常!
這里是以圖表的形式:
并且當你添加一個 GET 路由的時候, 它將會轉到你上面分配的路由。
步驟4: 開放營業 (端口)好吧,最后一部分。 到目前為止,你已經雇傭了一位經理,在接受客戶請求之前定義了要做的事情,并且確定如何處理特定的客戶請求。現在,你只需確定所需位置的地址即可。
你的服務器端口有點像餐廳本身的地址。 由于你的服務器可以同時處理多種類型的餐廳(或服務器端腳本),因此你需要告知每個腳本應在哪里運行。
在上面的例子中,端口是 3000,它位于你的計算機上。 所以如果你輸入:
? https://localhost:3000/
在你的瀏覽器中,并且你在運行你的 Node 應用程序,服務器知道運行特定的腳本。 在這種情況下,只要輸入URL,您將在控制臺中記錄消息,并能夠使用任何路由。 如果餐廳本身是您的電子商務應用程序,那么它現在在地址 3000 處開始營業。
你喜歡這個教程嗎? 給它點贊,讓別人也可以發現它。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/89708.html
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界...
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界...
摘要:而且目前大部分編程語言的高級應用都會用到數據結構與算法以及設計模式。隊列在尾部添加新元素,并從頂部移除元素。最新添加的元素必須排在隊列的末尾。 前言 JavaScript是當下最流行的編程語言之一,它可以做很多事情: 數據可視化(D3.js,Three.js,Chart.js); 移動端應用(React Native,Weex,AppCan,Flutter,Hybrid App,小程...
摘要:框架中間件作為的老牌框架是現有框架中最全面的。然而在學習除了那些之外,對于框架最重要的就是中間件這個概念了。中間件功能可以執行以下任務執行任何代碼對請求和響應對象進行更改。結束請求響應周期。調用堆棧中的下一個中間件。 express.js框架中間件(middleware) _express.js_作為_Node.js_的老牌框架,是現有框架中最全面的。然而在學習express除了那些a...
閱讀 1972·2021-11-25 09:43
閱讀 653·2021-10-11 10:58
閱讀 1730·2019-08-30 15:55
閱讀 1725·2019-08-30 13:13
閱讀 736·2019-08-29 17:01
閱讀 1840·2019-08-29 15:30
閱讀 789·2019-08-29 13:49
閱讀 2172·2019-08-29 12:13