再見,Linux+Apache+MySQL+PHP
哈囉,MongoDB+Express+Angular+Node.js
新一代高速容器化、安全平行化的全端架構
從LAMP跳到MEAN,跨越兩個世代
向舊架構說再見,迎向網頁開發的新里程碑從前分層架構的LAMP,需要系統管理員(Linux),網頁伺服器管理器(Apache),資料庫工程師(MySQL)及後端設計工程師(php)。然而一個全端工程師通常也是一個DevOps工程師,當然需要更輕更小的架構來完成全端開發。
MEAN四大天王,學習簡單、高可用性、快速上手、平行處理、早已成為業界全端的主流,本書使用了60個範例以及2個大型專案,只要有一點點HTML的基礎,你就能動手建立上億流量的大型商用網站。
快試試這一勞永逸的新架構、事半功倍的新組合!
作者簡介:
柳偉衛,網名老衛、waylau
一線互聯網公司架構師,CSDN、雲棲社區等社區技術專家,慕課網講師。
具有多年軟體發展管理及系統架構經驗。負責過多個省、國家級分散式系統的設計與研發,參與了多個大型專案微服務架構的技術改造。
長期躍於各大開源社區,為開源社區編寫了30餘本技術教程,廣受網友好評。
●博客:https://waylau.com
●電子信箱:waylau521@gmail.com
●微博:http://weibo.com/waylau521
作者序
前言
✤ 寫作背景
曾經業界流行使用LAMP 架構(Linux、Apache、MySQL 和PHP)來快速開發中小網站。LAMP 是開放原始程式碼的,而且使用簡單、價格低廉,因此LAMP 架組成為當時開發中小網站的首選,號稱「平民英雄」。而今隨著Node.js 的流行,JavaScript 終於在伺服器端擁有一席之地。JavaScript 成為從前端到後端再到資料庫能夠支援全端開發的語言。而以MongoDB、Express、Angular 和Node.js 四種開放原始碼技術為核心的MEAN 架構,除具備LAMP 架構的一切優點外,還能支撐高可用、高平行處理的大型網際網路應用的開發。MEAN 架構勢必也會成為新的「平民英雄」。
市面上獨立說明MongoDB、Express、Angular 和Node.js 的書較為豐富,但將這些技術綜合運用的案例和資料比較少。鑑於此,筆者撰寫了這本書加以補充。希望讀者透過學習本書具有全端開發的能力。
✤ 本書有關的技術及相關版本
請讀者將相關開發環境設定成不低於本書所採用的設定。
●Node.js 12.9.0
●NPM 6.12.2
●Express 4.17.1
●MongoDB Community Server 4.0.10
●MongoDB 3.3.1
●Angular CLI 8.3.0
●NG-ZORRO 8.1.2
●ngx-Markdown 8.1.0
●basic-auth 2.0.1
●NGINX 1.15.8
✤ 本書特點
1. 可與筆者線上交流
本書提供以下交流網址,讀者有任何技術的問題都可以向筆者提問。
https://github.com/waylau/mean-book-samples/issues
2. 提供了以技術點為基礎的58 個實例和1 個綜合性實戰專案
本書提供了58 個MEAN 架構技術點的實例,將理論說明完成到程式實現上。這些實例具有很高的應用價值和參考價值。在掌握了基礎之後,本書還提供了1 個綜合性實戰專案。
3. 免費提供書中實例的原始檔案簡體原始程式碼亦可在筆者的github 下載, 網址為https://github.com/waylau/mean-book-samples。筆者會不定時更新程式碼。本書免費提供書中所有實例的原始檔案。讀者可以一邊閱讀本書,一邊參照原始檔案動手練習。這樣不僅可以加強學習的效率,還可以對書中的內容有更加直觀的認識,進一步逐漸培養自己的程式設計能力。
4. 覆蓋的知識面廣
本書覆蓋了MongoDB、Express、Angular、NG-ZORRO、ngx-markdown、basic-auth 和NGINX 等在內的MEAN 架構技術點,技術前瞻,案例豐富。不管是程式設計初學者,還是程式設計高手,都能從本書中獲益。本書可作為讀者的案頭工具書,隨手翻閱。
5. 語言簡潔,閱讀流暢
本書採用結構化的層次,並採用簡短的段落和敘述,讓讀者讀來有順水行舟的輕快感。
6. 案例的商業性、應用性強
本書提供的案例多數來自真實的商業專案,具有很高的參考價值。有些程式甚至可以移植到自己的專案中直接使用,使從「學」到「用」這個過程變得更加直接。
✤ 聯繫作者
由於筆者能力有限、時間倉促,書中難免有錯漏之處,歡迎讀者透過以下方式與筆者聯繫。
●部落格:https://waylau.com
●電子郵件:waylau521@gmail.com
●微博:http://weibo.com/waylau521
●GitHub:https://github.com/waylau
✤ 致謝
感謝電子工業出版社的吳宏偉編輯,他在本撰寫作過程中仔細審稿稿件,給予了很多指導和幫助,以及編校團隊對本書在編輯、校對、排版、封面設計等方面所給予的幫助,使本書得以順利出版。
感謝我的父母、妻子Funny 和兩個女兒。由於撰寫本書,我犧牲了很多陪伴家人的時間。謝謝他們對我的了解和支援。
柳偉衛
前言
✤ 寫作背景
曾經業界流行使用LAMP 架構(Linux、Apache、MySQL 和PHP)來快速開發中小網站。LAMP 是開放原始程式碼的,而且使用簡單、價格低廉,因此LAMP 架組成為當時開發中小網站的首選,號稱「平民英雄」。而今隨著Node.js 的流行,JavaScript 終於在伺服器端擁有一席之地。JavaScript 成為從前端到後端再到資料庫能夠支援全端開發的語言。而以MongoDB、Express、Angular 和Node.js 四種開放原始碼技術為核心的MEAN 架構,除具備LAMP 架構的一切優點外,還能支撐高可用、高平行處理的大型網際網路應用的開發。MEAN 架構勢必也...
目錄
第一篇 初識MEAN
01 MEAN 架構概述
1.1 MEAN 架構核心技術堆疊的組成
1.2 MEAN 架構週邊技術堆疊的組成
1.3 MEAN 架構的優勢
1.4 開發工具的選擇
第二篇 Node.js -- 全端開發平台
02 Node.js 基礎
2.1 Node.js 簡介
2.2 Node.js 的特點
2.3 安裝Node.js
2.4 第1 個Node.js 應用
03 Node.js 模組-- 大型專案管理之道
3.1 了解模組化機制
3.2 使用NPM 管理模組
3.3 Node.js 的核心模組
04 Node.js 測試
4.1 嚴格模式和遺留模式
4.2 實例3:斷言的使用
4.3 了解AssertionError
4.4 實例4:使用deepStrictEqual
05 Node.js 緩衝區--高性能I/O 處理的秘訣
5.1 了解Buffer 類別
5.2 建立緩衝區
5.3 切分緩衝區
5.4 連結緩衝區
5.5 比較緩衝區
5.6 緩衝區編/ 解碼
06 Node.js 事件處理
6.1 了解事件和回呼
6.2 事件發射器
6.3 事件類型
6.4 事件的操作
07 Node.js 檔案處理
7.1 了解fs 模組
7.2 處理檔案路徑
7.3 開啟檔案
7.4 讀取檔案
7.5 寫入檔案
08 Node.js HTTP 程式設計
8.1 建立HTTP 伺服器
8.2 處理HTTP 的常用操作
8.3 請求物件和回應物件
8.4 REST 概述
8.5 成熟度模型
8.6 實例18:建置REST 服務的實例
第三篇 Express -- Web 伺服器
09 Express 基礎
9.1 安裝Express
9.2 實例19:撰寫"Hello World" 應用
9.3 實例20:執行"Hello World" 應用
10 Express 路由-- 頁面的導覽員
10.1 路由方法
10.2 路由路徑
10.3 路由參數
10.4 路由處理器
10.5 回應方法
10.6 實例28:以Express 為基礎建置REST API
10.7 測試Express 的REST API
11 Express 錯誤處理器
11.1 捕捉錯誤
11.2 預設錯誤處理器
11.3 自訂錯誤處理器
第四篇 MongoDB 篇-- NoSQL資料庫
12 MongoDB 基礎
12.1 MongoDB 簡介
12.2 安裝MongoDB
12.3 啟動MongoDB 服務
12.4 連結MongoDB 伺服器
13 MongoDB 的常用操作
13.1 顯示已有的資料庫
13.2 建立、使用資料庫
13.3 插入文件
13.4 查詢文件
13.5 修改文件
13.6 刪除文件
14 實例31:使用Node.js 操作MongoDB
14.1 安裝mongodb 模組
14.2 存取MongoDB
14.3 執行應用
15 mongodb 模組的綜合應用
15.1 實例32:建立連接
15.2 實例33:插入文件
15.3 實例34:尋找文件
15.4 修改文件
15.5 刪除文件
第五篇 Angular -- 前端應用開發平台
16 Angular 基礎
16.1 常見的UI 程式設計架構
16.2 Angular 的安裝
16.3 Angular CLI 的常用操作
16.4 Angular 架構概覽
16.5 實例39:建立第1 個Angular應用
17 Angular 模組-- 大型前端應用管理之道
17.1 模組概述
17.2 啟動
17.3 常用模組
17.4 特性模組
17.5 入口元件
18 Angular 元件-- 獨立的開發單元
18.1 資料展示
18.2 生命週期
18.3 元件的對話模式
18.4 樣式
19 Angular 範本和資料綁定
19.1 範本運算式
19.2 範本敘述
19.3 資料綁定
19.4 屬性綁定
19.5 事件綁定
20 Angular 指令-- 元件行為改變器
20.1 指令類型
20.2 屬性型指令
20.3 結構型指令
21 Angular 服務與依賴植入
21.1 初識依賴植入
21.2 在Angular 中實現依賴植入
21.3 多級依賴植入
22 Angular 路由
22.1 設定路由
22.2 了解路由器連結
22.3 路由事件
22.4 重新導向URL
22.5 實例57:一個路由器的實例
23 Angular 響應式程式設計
23.1 了解Observable 機制
23.2 了解RxJS 技術
23.3 了解Angular 中的Observable
24 Angular HTTP 用戶端
24.1 初識HttpClient
24.2 認識網路資源
24.3 實例58:取得天氣資料
24.4 錯誤處理
第六篇 綜合應用-- 建構一個完整的網際網路應用
25 整體設計
25.1 應用概述
25.2 模型設計
25.3 介面設計
25.4 許可權管理
26 用戶端應用
26.1 UI 設計
26.2 實現UI 原型
26.3 實現路由器
27 伺服器端應用
27.1 初始化伺服器端應用
27.2 初步實現使用者登入認證功能
27.3 實現新聞編輯器
27.4 實現新聞列表展示
27.5 實現新聞詳情展示
27.6 實現認證資訊的儲存及讀取
27.7 歸納
28 用NGINX 實現高可用
28.1 NGINX 概述
28.2 部署用戶端應用
28.3 實現負載平衡及高可用
A 參考文獻
第一篇 初識MEAN
01 MEAN 架構概述
1.1 MEAN 架構核心技術堆疊的組成
1.2 MEAN 架構週邊技術堆疊的組成
1.3 MEAN 架構的優勢
1.4 開發工具的選擇
第二篇 Node.js -- 全端開發平台
02 Node.js 基礎
2.1 Node.js 簡介
2.2 Node.js 的特點
2.3 安裝Node.js
2.4 第1 個Node.js 應用
03 Node.js 模組-- 大型專案管理之道
3.1 了解模組化機制
3.2 使用NPM 管理模組
3.3 Node.js 的核心模組
04 Node.js 測試
4.1 嚴格模式和遺留模式
4.2 實例3:斷言的使用
4.3 了解AssertionError
4.4 實例4:使用deepS...
購物須知
退換貨說明:
會員均享有10天的商品猶豫期(含例假日)。若您欲辦理退換貨,請於取得該商品10日內寄回。
辦理退換貨時,請保持商品全新狀態與完整包裝(商品本身、贈品、贈票、附件、內外包裝、保證書、隨貨文件等)一併寄回。若退回商品無法回復原狀者,可能影響退換貨權利之行使或須負擔部分費用。
訂購本商品前請務必詳閱退換貨原則。