瞭解Node.js-to-Angular 套件元件
Node.js-to-Angular套件最常見的,並且我們相信也是最好的版本是包括MongoDB、Express、Angular和Node.js 的Node.js-to-Angular 套件。
在Node.js-to-Angular 套件中,Node.js 提供了開發的基礎平臺。後端服務和伺服器端指令碼都是用Node.js 編寫的。MongoDB 提供了網站的資料儲存,但通過一個MongoDB驅動Node.js 模組進行訪問。Web 伺服器是通過Express 定義的,這也是一個Node.js 的模組。
在瀏覽器中的檢視使用Angular 框架定義和控制。Angular 是一個MVC 框架,在該框架中的模型由JSON 或JavaScript 物件組成,檢視是HTML/CSS,而控制器由AngularJavaScript 組成。

上圖提供了一個基本的圖示,它顯示Node.js-to-Angular 套件是如何適合基本的網站/Web 應用模型的。以下各節描述每種技術,以及它們被選為Node.js-to-Angular 套件的一個組成部分的原因。
1 Node.js
Node.js 是一個基於谷歌的V8 JavaScript 引擎的開發框架。因此,Node.js 程式碼是用JavaScript 編寫的,然後由V8 編譯為機器碼供執行。
你可以用Node.js 編寫許多後臺服務、伺服器端指令碼和任何支援Web 應用程式的功能。Node.js 的好處是它各部分都只包含JavaScript,因此,可以方便地從客戶端指令碼提取功能,然後將其放置到伺服器端指令碼中。此外,Web 伺服器可以在Node.js 平臺上作為一個Node.js的模組直接執行,這意味著它比使用其他軟體,比方說,Apache 連線新服務或伺服器端指令碼要更容易。
Node.js 之所以是一個出色的啟動框架,有下面幾個原因。
JavaScript 端到端:Node.js 的一個最大優點是,它可以讓你用JavaScript 同時編寫伺服器端和客戶端指令碼。決定把指令碼邏輯放置於何處,一直是一件困難的事情。在客戶端放太多東西會使客戶端變得煩瑣而又笨拙,而在伺服器端放太多東西又會拖慢Web 應用並使Web 伺服器不堪重負。利用Node.js,你可以在客戶端上編寫JavaScript,並輕鬆地在伺服器上適應它,反之亦然。而且,客戶端的開發者和伺服器的開發者使用同一種語言。
事件驅動的可伸縮性:Node.js 應用不同的邏輯來處理Web 請求。處理Web 請求時,這些請求都在同一個執行緒上採用一種基本的事件模型被處理,而不是讓多個執行緒等待處理。這使得Node.js Web 伺服器可以用傳統的Web 伺服器永遠不能的方式進行擴縮。
可擴充套件性:Node.js 有很多的追隨者和一個活躍的開發社群。人們正在不斷提供新的模組來擴充套件Node.js 的功能。此外,在Node.js 中安裝和包含新的模組是非常簡單的,你可以在幾分鐘內擴充套件Node.js 的專案來包含新的功能。
快速執行:建立Node.js,並在其中開發是超級容易的。在短短几分鐘內就可以安裝Node.js,並擁有一個能工作的Web 伺服器。
2 MongoDB
MongoDB 是一個靈活的和可伸縮的NoSQL 資料庫。Mongo 這個名字來自單詞“堆積如山”(humongous)。它基於NoSQL 文件儲存模型,這意味著資料在資料庫中作為JSON 物件形式被儲存,而不是作為關係資料庫中傳統的列和行儲存。
MongoDB 為需要儲存諸如使用者評論、部落格或其他專案資料的高流量的網站提供了出色的網站後端儲存,因為它是快速、可伸縮和易於實現的。本書介紹了使用MongoDB 的驅動程式庫從Node.js 訪問MongoDB。
Node.js 支援多種資料庫訪問驅動程式,因此資料很容易用MySQL 或其他資料庫來儲存。但是,下面是MongoDB 真正適合於Node.js 套件的一些原因。
針對文件:因為MongoDB 是針對文件的,資料在資料庫中儲存的格式接近於你將在伺服器端和客戶端指令碼中處理它們的格式。這消除了把資料從行轉換為物件和轉換回來的需要。
高效能:MongoDB 是目前效能最高的資料庫之一。尤其是在現在,當有越來越多的人與網站進行互動時,具有能夠支援大流量的後端是很重要的。
高可用性:MongoDB 的複製模型使得它容易維護可伸縮性,同時又保持高效能。
高可伸縮性:MongoDB 的結構使得它可以很容易地通過在多個伺服器上對資料共享實現水平伸縮。
無SQL 注入:MongoDB 是不容易受到SQL 注入攻擊的(也就是向Web 表單或從瀏覽器的其他輸入中輸入SQL 語句,從而危及資料庫的安全性)。這是因為物件被儲存為物件,不使用SQL 字串。
3 Express
Express 模組在Node.js-to-Angular 套件中充當Web 伺服器。它執行在Node.js 中,使得其很容易配置、實現和控制。Express 模組擴充套件了Node.js,它提供幾個關鍵元件來處理Web 請求。這可以讓你用短短几行程式碼實現在Node.js 中執行的Web 伺服器。
例如,Express 模組為使用者提供輕鬆設定連線到目的地的路徑(URL)的功能。它也在處理HTTP 請求和響應物件,包括在處理像cookie 和HTTP 標頭的方面提供強大的功能。
以下是Express 有價值的功能的部分列表。
路由管理:Express 可以很容易地定義直接綁在伺服器上的Node.js 指令碼功能的路由(URL 端點)。
錯誤處理:Express 為“未找到檔案”等錯誤提供了內建的錯誤處理。
易於整合:一個Express 伺服器可以很容易地在現有的反向代理系統,如Nginx或Varnish 之後實現。這使它可以輕鬆地整合到現有的安全系統。
cookie:Express 提供了簡單的cookie 管理。
會話和快取管理:Express 也能夠進行會話管理和快取管理。
4 Angular
Angular 是由谷歌開發的客戶端框架。Angular 提供處理使用者在瀏覽器中的輸入,操縱客戶端上的資料,並控制如何在瀏覽器檢視上顯示元素所需要的所有功能。它是用TypeScript 編寫的。Angular 背後的理論是提供一個框架,使得可以很容易地實現使用MVC框架的Web 應用程式。
也可以在Node.js 平臺上使用其他JavaScript 框架,如Backbone、Ember 和Meteor。然而,Angular 擁有在寫作本書之際最好的設計、功能集和軌跡。下面是Angular 的一些好處。
資料繫結:Angular 利用其強大的範圍機制,有一個將資料繫結到HTML 元素的非常乾淨的方法。
可擴充套件性:Angular 架構允許你輕鬆地擴充套件語言的各個方面,以提供你自己的自定義實現。
整潔:Angular 迫使你編寫整潔的、合乎邏輯的程式碼。
可重用程式碼:可擴充套件性和簡潔程式碼的結合,使得易於用Angular 編寫可重用的程式碼。事實上,在建立自定義服務的時候,該語言往往迫使你這樣做。
支援:谷歌正把大量資金投入這個專案,這使得它比那些已失敗的類似舉措更具優勢。
相容性:Angular 基於TypeScript。這使得開始整合Angular 到你的環境和重用在Angular 框架結構內的現有程式碼片段都更容易。