成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

出去就餐并且理解Express.js的基本知識

xuhong / 2354人閱讀

摘要:原文譯者如果你曾經(jīng)去過一個坐下來就餐的餐廳,那么你可以了解的基礎(chǔ)知識。而且由于缺少路徑,它將在每個請求上運行。這就是路由的來源。到目前為止,你已經(jīng)雇傭了一位經(jīng)理,在接受客戶請求之前定義了要做的事情,并且確定如何處理特定的客戶請求。

原文: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

如果你曾經(jīng)去過一個坐下來就餐的餐廳,那么你可以了解 Express 的基礎(chǔ)知識。 但是,如果你剛剛開始構(gòu)建你的第一個 Node.js 后端......你可能并不會很順利。

是的 - 如果你曾經(jīng)有過 JavaScript 經(jīng)驗,學(xué)習(xí) Node 肯定更容易。 但是,在構(gòu)建后端時面臨的挑戰(zhàn)與在前端使用JavaScript 時所面臨的挑戰(zhàn)完全不同。

當(dāng)我學(xué)習(xí)Node時,我選擇了困難的方式。 我一遍又一遍地學(xué)習(xí)電子書,寫作教程和視頻,直到我終于明白我為什么要做我正在做的事情。

有一個更簡單的方法。 我打算用一個餐館的比喻來解釋你的第一個應(yīng)用程序的四個關(guān)鍵部分。 Express.js 是一個組織你的代碼的流行框架,我會為任何初學(xué)者推薦它。 稍后我會進(jìn)一步解釋。

下面是我們將會涉及到的四個關(guān)鍵部分:

The require statements

Middleware

Routing

App.listen()/ Starting the server

在這個比喻中,你是一個餐館老板,希望雇用一個總經(jīng)理 - 創(chuàng)建所有流程并且進(jìn)行管理,這樣餐廳就可以順利運行,客戶也就快樂了。

下面是接下來部分的預(yù)覽:

最后,你將會理解基本 Express app 的每個部分的功能。

步驟1: 雇傭經(jīng)理 (require statements)

在這個例子中,你是餐館老板。 而且你需要聘請專家來管理你的新餐廳的日常運作。 你當(dāng)然不是專家,你不能把它交給服務(wù)員和廚房去搞清楚。

如果你想經(jīng)營一家高效安全的餐廳,你需要有人來保證你的員工以最高的效率工作。 Express 就是新的經(jīng)理。

第一部分非常簡單。 與其他 NPM 軟件包一樣,你需要使用 npm 安裝 express 模塊,然后使用 require statement 來加載模塊。

不像其它的許多 NPM 包,你也需要使用這行:

const app = express();

這是因為你需要一個變量來保存你的新的 Express 應(yīng)用程序。 Express 不是 Node 的默認(rèn)部分。

步驟二: 在餐廳做決定 (middleware)

讓我們在這停一下。餐廳里最常見的例程有哪些?我們腦海中立馬出現(xiàn)了3個:

給新顧客安排座位

接受食物訂單

在用餐結(jié)束進(jìn)行確認(rèn)

對于每一個例程,都需要進(jìn)行一系列的進(jìn)程才能執(zhí)行行動。比如,在你給顧客安排座位之前,你需要知道:

他們是不是穿了襯衫和鞋子(以及褲子)?否則,他們不能被安排座位。

如果他們想坐在吧臺那里,他們是否已經(jīng)有21歲(如果你在美國的話)

這不是海灘酒吧! 同樣,在你的代碼中,你需要驗證請求是否具有某些標(biāo)準(zhǔn),然后才能繼續(xù)。 例如,如果有人嘗試登錄到你的網(wǎng)站:

他們是否具有賬戶?

他們是否輸入了正確的密碼?

這是 middleware 概念的來源。Middleware 功能允許你對任何傳入的請求采取行動,并在發(fā)回響應(yīng)之前對其進(jìn)行修改。

在你的餐廳,你需要一系列的規(guī)則來決定你是否應(yīng)該接待來訪的人。 比方說,一對夫婦走進(jìn)你的餐廳。 在給他們一張桌子之前,你有一條規(guī)則:他們穿著襯衫和鞋子嗎?

首先,你從app.use()開始。這意味著這些僅僅是下一個路線需要應(yīng)用的規(guī)則。它們不是 GET,POST,PUT或DELETE。

在第四行,你有一個匿名函數(shù),參數(shù) req,res 和 next。對于這個代碼塊的目的,你只是檢查請求(req),看它是否有襯衫和鞋子。

你最后還需要使用next()函數(shù),因為你只是在這里驗證服裝。之后,在路線中,你將允許客人獲得實際的桌子。

在第五行和第六行,你檢查他們是否有襯衫和鞋子。

而在第7-9行中,只有兩者兼而有之才行。

上面的代碼塊缺少一個重要的事情:一個路徑。這是請求中包含的特定字符串。而且由于缺少路徑,它將在每個請求上運行。

你可以想象?當(dāng)顧客進(jìn)入餐館...點了食物...要求支票...員工將被迫在他們上下看他們確定他們穿衣服!這是一個快速停業(yè)的辦法。

所以,我們在上面的例子中改變第4行。 現(xiàn)在,我們只會在用戶請求“/ table”路徑時運行這個代碼。

完整的解釋:

步驟3: 執(zhí)行常見的例程 (路由)

讓我們繼續(xù)就座的例子。 到目前為止,我們只知道如何驗證某人是否應(yīng)該就做。 但是我們實際上并不知道如何把他們指引到桌子旁邊并且就坐。

這就是路由的來源。路由允許我們根據(jù)路徑編寫具體的行動。 選項是 GET,POST ,PUT 和 DELETE,但現(xiàn)在我們將重點介紹 GET 和 POST。

在餐廳的環(huán)境下,我們需要創(chuàng)建一個 GET 請求,以便選擇一個特定的桌子并安排客人就做。 GET 不會修改或添加新數(shù)據(jù)到你的數(shù)據(jù)庫。 他們只是檢索基于特定參數(shù)的信息。

在這種情況下,假設(shè)你需要創(chuàng)建一個程序來安排兩個派對。 2號來自客戶的要求。

好的,在我解釋之前:是的,這只是在最后發(fā)送信息。 實際上還沒有找到一個具體的表格來給客戶安排座位。 我需要在一個數(shù)組中搜索一個打開的表格,這涉及到更多的背景故事......這超出了本教程的范圍。

在第12行中,我們定義了當(dāng)賓客請求"table"路由時查找表的過程。 就像上面的中間件示例一樣,我們有可用的請求和響應(yīng)參數(shù)。 它也有一個參數(shù),金額。 在這個例子中,這是兩個。

事實上,第12行函數(shù)聲明之后的所有內(nèi)容在技術(shù)上都是middleware,因為它修改了用戶請求。 你會看到圖中的結(jié)尾。

在第13行中,我們從請求對象的參數(shù)中訪問聚會中的人數(shù)。 由于請求來自用戶,所以沒有聲明任何地方,我們沒有任何前端代碼。 所以如果這是一個真正的應(yīng)用程序,請求可能如下所示:

req = {
  params: {
    amount: 2;
  }
}

在第13行中,我們的 party 變量訪問請求中的 params 對象的 amount 屬性。

最后在第14行,我們發(fā)送響應(yīng)給客戶:我們正在尋找合適的桌子。

這是一次很多。 下面一張圖表:

步驟3.5: 讓你的餐廳有效率 (路由)

現(xiàn)在您可以追蹤從請求到響應(yīng)的完整路徑。 但是,隨著你的應(yīng)用程序的規(guī)模不斷擴大,你將不希望多帶帶為每條路由編碼規(guī)則。 你會發(fā)現(xiàn)一些路由共享相同的規(guī)則,所以你需要找到一種方法來將一組規(guī)則應(yīng)用到多個路由。

就座位而言,您可以將你的客戶安置在吧臺或餐桌旁。 他們有襯衫和鞋子的共同規(guī)則,但是在酒吧里坐著要求每個人都超過 21歲。

而且,在服務(wù)客戶方面,你需要使用稍微不同的程序來供應(yīng)開胃菜,主菜和晚餐。 但是,這三條路線也有很多共同之處。

這是路由器進(jìn)來的地方。路由器讓你分組你的路由,這樣你就可以創(chuàng)建通用的規(guī)則。

我們需要創(chuàng)建 middleware 來覆蓋這些情況。 現(xiàn)在我會將考慮到上面的就座案例,對上面的代碼進(jìn)行重寫。

這是完整的代碼片段:

我們的路由器。

在第6行和第14行,我們現(xiàn)在使用seatingRouter.use()來代替app.use()來表示這個中間件只與seatRouter路由有關(guān)。

最后,在第21行中,我們添加了更多的中間件,以顯示每個座位路由器以“/ seating”開頭。 所以,如果有人要求在酒吧坐一個座位,完整的路徑是"/ seating / bar",這可能會有點不合理,因為當(dāng)你在第4行創(chuàng)建路由器時,你可能會預(yù)期路徑被定義。 這很正常!

這里是以圖表的形式:

并且當(dāng)你添加一個 GET 路由的時候, 它將會轉(zhuǎn)到你上面分配的路由。

步驟4: 開放營業(yè) (端口)

好吧,最后一部分。 到目前為止,你已經(jīng)雇傭了一位經(jīng)理,在接受客戶請求之前定義了要做的事情,并且確定如何處理特定的客戶請求?,F(xiàn)在,你只需確定所需位置的地址即可。

你的服務(wù)器端口有點像餐廳本身的地址。 由于你的服務(wù)器可以同時處理多種類型的餐廳(或服務(wù)器端腳本),因此你需要告知每個腳本應(yīng)在哪里運行。

在上面的例子中,端口是 3000,它位于你的計算機上。 所以如果你輸入:

? https://localhost:3000/

在你的瀏覽器中,并且你在運行你的 Node 應(yīng)用程序,服務(wù)器知道運行特定的腳本。 在這種情況下,只要輸入URL,您將在控制臺中記錄消息,并能夠使用任何路由。 如果餐廳本身是您的電子商務(wù)應(yīng)用程序,那么它現(xiàn)在在地址 3000 處開始營業(yè)。

你喜歡這個教程嗎? 給它點贊,讓別人也可以發(fā)現(xiàn)它。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89708.html

相關(guān)文章

  • 【全棧之路】JAVA基礎(chǔ)課程五_哲學(xué)家就餐問題(20190614v1.2)

    摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識點進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界...

    Mr_houzi 評論0 收藏0
  • 【全棧之路】JAVA基礎(chǔ)課程五_哲學(xué)家就餐問題(20190614v1.2)

    摘要:歡迎進(jìn)入基礎(chǔ)課程博客地址本系列文章將主要針對一些基礎(chǔ)知識點進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸開發(fā)菜鳥還是業(yè)界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加。 歡迎進(jìn)入JAVA基礎(chǔ)課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎(chǔ)知識點進(jìn)行講解,為平時歸納所總結(jié),不管是剛接觸JAVA開發(fā)菜鳥還是業(yè)界...

    JerryZou 評論0 收藏0
  • [ JavaScript ] 數(shù)據(jù)結(jié)構(gòu)與算法 —— 隊列

    摘要:而且目前大部分編程語言的高級應(yīng)用都會用到數(shù)據(jù)結(jié)構(gòu)與算法以及設(shè)計模式。隊列在尾部添加新元素,并從頂部移除元素。最新添加的元素必須排在隊列的末尾。 前言 JavaScript是當(dāng)下最流行的編程語言之一,它可以做很多事情: 數(shù)據(jù)可視化(D3.js,Three.js,Chart.js); 移動端應(yīng)用(React Native,Weex,AppCan,Flutter,Hybrid App,小程...

    Yi_Zhi_Yu 評論0 收藏0
  • express.js框架中間件(middleware)

    摘要:框架中間件作為的老牌框架是現(xiàn)有框架中最全面的。然而在學(xué)習(xí)除了那些之外,對于框架最重要的就是中間件這個概念了。中間件功能可以執(zhí)行以下任務(wù)執(zhí)行任何代碼對請求和響應(yīng)對象進(jìn)行更改。結(jié)束請求響應(yīng)周期。調(diào)用堆棧中的下一個中間件。 express.js框架中間件(middleware) _express.js_作為_Node.js_的老牌框架,是現(xiàn)有框架中最全面的。然而在學(xué)習(xí)express除了那些a...

    fuchenxuan 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<