2015 年 9 月

第 30 卷,第 9 期

本文章是由機器翻譯。

工作的程式師如何成為平均: Node.js

Ted Neward | 2015 年 9 月

Ted NewardMicrosoft 有已採用技術從跨軟體應徵者其 rebranding 和"re relevancing"。 已採用的技術之一是 Node.js。這讓開發人員使用其中一個受歡迎的完整堆疊軟體群組稱為平均值 Node.js 平台上黃金有機會: MongoDB、 Express、 AngularJS 和 Node.js。

在上一篇文章中 (msdn.microsoft.com/magazine/mt185576),我有基本的 Node.js 組件啟動並執行。在此我運轉簡單節點"Hello World"Web 端點,將它部署至 Microsoft Azure 網站。透過 [下一步幾期中,我將緩時變建置我穿過平均堆疊從頭運作。

如前一篇文章所述,有許多地方其中我無法空出平均堆疊的組件的其他項目 — MongoDB、 Node.js 的 ASP.NET WebAPI 和 ASP.NET MVC 的 Express 或 BackboneJS (或任何其他 JavaScript 單一頁面上的應用程式架構的整個主機) 的 AngularJS DocumentDB — 但無替代項目盡情享受平均值目前擁有的熱門程度 (至少在 JavaScript 迷之間)。

Node.js

Node.js 是基本上只是"JavaScript 在伺服器上的。" 沒錯,是不同的程式設計方法來嘗試處理並行執行的 Node.js。而不是在呼叫區塊,程式設計人員會將函式中作業完成時要叫用常值。這可讓開發人員認為做為單一執行緒的程式碼即使有多個執行緒都在使用下列介面。整體而言,不過 Node.js 的最大差異是您使用 JavaScript 建置的伺服器元件,而不是 C#、 Java 或 Ruby。就這個方面來看,其實只是變更場景 — 不是完全不同的宇宙。

最簡單的 Node.js 應用程式當然是,無所不在"Hello,World,"其中您可以輕鬆地撰寫使用內建主控台物件:

console.log("Howdy, NodeJS!");

假設這進入稱為 hello.js 目前目錄中的檔案,您會使用執行該節點的公用程式在命令列使用節點 hello.js。或者您也可以讓 Node.js 副檔名推斷的只是執行 「 節點 hello 」。 無論如何,節點 greets 您以傳統方式。

大部分的程式設計平台一樣 Node.js 會有自己的程式庫和 Api 集現成可用的。我在前文出最後一次,會使用 Node.js 需要以參考已安裝的程式庫的慣例。這可以捕捉傳回的物件放入相同名稱的本機變數。所以比方說,如果我想要撰寫一個簡單的 HTTP 伺服器來有效地協助我相同招呼語透過 HTTP 通訊協定,我可以放下列簡單 helloHTTP.js 檔案:

var http = require('http');
var port = process.env.PORT || 3000;
http.createServer(function(req, res) {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World\n');
}).listen(port);

需要列尋找"http"媒體櫃內 Node.js 安裝並將它儲存到中相依性插入的 http 物件。這是標準的 Node.js 慣例,而且應該被視為相當 sacrosanct 時。第二行會使用內建程序物件來存取週遭環境。在此情況下,它會使用此程序物件內的"env"物件來判斷是否要將名為連接埠的環境變數設定為任何項目。如果它是我將會以用來執行伺服器上的連接埠。否則,我將使用預設連接埠 3000。許多 Node.js 架構偏好做為預設的連接埠 3000 原因隱蔽式歷史資料和文化特性。

接下來的幾個幾行中的 Node.js 程式設計本質更清楚。我可以使用 http 物件來建立 HTTP 伺服器。唯一的參數是函數常值接受要求 (HTTP 要求) 物件和 res (HTTP 回應) 物件做為參數,並使用 res 回寫入 HTTP 回應。這個慣用語是無所不在整個 Node.js 堆疊的所有層級。

這是需要進行 「 您一定會愛上它或您喜 」 此類的事情。您會看到多個這到文件中。所以如果這不清楚,花一些時間進行實驗。CreateServer 從傳回的物件會繫結到使用接聽呼叫所需的連接埠。您瞧,您已經執行的 HTTP 伺服器您可以輕鬆地執行使用"節點 helloHTTP"並將瀏覽器指向 http://localhost:3000/。

Azure 命令列工具

從我的上一篇文章中,您應該還記得 Node.js 具有稱為節點封裝管理員 (npm) 您可以使用下載相依程式庫的封裝公用程式。您也可以使用命令列從下載然後您可以使用的工具。這是 Node.js 的微妙卻強大、 層面。它做為平台中性"職場等化器。 」

您可以有效地隱藏之間 Windows、 Mac OS 或 Linux 背後的 JavaScript 指令碼的牆上的任何差異。Microsoft 報導這就在不久,並封裝到稱為 azure cli Node.js 封裝的一組命令列工具。安裝它很容易 npm:

npm install –g azure-cli

-G 旗標會告知 「 全域 」 安裝工具 npm (亦即它們未繫結至執行此命令的本機目錄)。如此產生的封裝可用於整個系統。完成後,新命令列公用程式,azure,將可供使用。Azure cli 套件不提供任何更高或較少的功能比使用 Azure 入口網站。Azure cli 工具的優點在於它能夠做為自動化一部分的 azure 的指令碼命令,例如部署系統。

部署至 Azure

因此,如果您想這個可愛小問候語可供全球透過網際網路,您需要建立 Azure 網站做為主機。使用 [azure] 工具,就很簡單。首先,您必須將此工具繫結到 Azure 中的帳戶:

azure account download

這會啟動系統的預設瀏覽器指向 Azure 登入入口網站。使用 Azure 帳戶認證來登入。當您完成時,它會自動下載包含認證資訊的 publishSettings 檔案的 azure 工具的需求,可以直接匯入:

azure account import <filename>

檔案名稱通常是像 「 Visual Studio Ultimate with MSDN-4-23-2015年-credentials.publishsettings,"根據 Azure 訂用帳戶詳細資料和下載 publishSettings 檔案的日期。完成後,它是要部署至網站設定 Git 來建立新的 Azure 網站很容易的事:

azure site create –git

這會提示您輸入網站名稱和 (假設該名稱唯一的) 運轉適當的網站。如果所有的運作方式,為 git 初始化本機儲存機制組織目前的目錄。假設您仍在保存 helloHTTP.js 檔案從先前的相同目錄中,您可以將它加入至 Git 儲存機制並發送至 Azure 雲端:

git add helloHTTP.js
git commit –m "Initial commit"
git push azure master

Git 會考慮一下幾秒鐘。然後它會通過一系列的時間維持不透明的步驟。當完成,不過 Azure 將會保留新的 Node.js 程式碼而您可以瀏覽至中, 所示 [圖 1

Hello,World 節點
[圖 1 Hello,World 節點

這就是為什麼 helloHTTP 程式碼會使用預設連接埠 3000 或從周圍的程序的環境變數連接埠。在 Azure 的雲端、 連接埠是設定為 Azure 基礎結構維護的值。這是讓 Microsoft 可以更有效率地管理各種不同的服務端點。

這真的是您需要執行的安裝步驟的最後一個。老實說,花較長的時間比起實際執行命令,一旦您已完成初始安裝階段閱讀相關資訊。而且任何 Azure 工作或瀏覽甚至更老實說,需要類似的安裝程式。Azure 真正代表許多的開發工作的下一個步驟平台。換句話說,這是您必須知道怎麼做最後,因此您可能也知道它現在。

從這裡幾乎所有項目會平均相關。您必須將考量 Azure 的詳細資料的唯一時間是您必須設定為指向 MongoDB 資料庫伺服器,例如環境或 Azure 的 Node.js 互動方式處理時。

總結

它是值得一提 Node.js 不只是 HTTP 管線。事實上,節點可以執行任何一種網路應用程式開啟了正確的文件庫。也是如此的 Microsoft.NET Framework。不過,像是.NET Framework 中,大部分的 Node.js 應用程式會以 HTTP 為基礎的本質。

在 Node.js 中的 http 程式庫是很低層級。如此一來,Node.js 社群開發更高層級的程式庫和一組抽象層以方便處理 HTTP 端點。此程式庫會呼叫 Express。它可讓您建置何種 Node.js 社群呼叫 「 中介軟體 」。 這是什麼我將討論在下一次。

現在試驗 Node.js http 程式庫,但是不太連接,因為我將會留下它美觀快速一旦我進入下一個反覆項目。在此同時,不過...

祝您編寫程式碼愉快。


Ted Neward 是在 iTrellis,顧問服務公司的技術長。他曾撰寫 100 個以上的文章和著作或合著十多本書籍,其中包括 「 專業 F # 2.0"(Wrox 2010)。他是 F # MVP 和在世界各地研討會發表演說。他會查閱並定期 mentors — 與他連絡 ted@tedneward.comted@itrellis.com 如果您有興趣。

感謝以下技術專家對本文的審閱: Shawn Wildermuth
Shawn Wildermuth 他的名稱是十三時間 Microsoft MVP (ASP.NET/IIS)、 八本書籍的作者和十幾進行軟體開發的文章和 Pluralsight 作者有超過 15 個課程。他是 Wilder 心中的其中一個 (http://wilderminds.com) 和他的部落格 mailto http://wildermuth.com