-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

全棧開發之道:MongoDB+Express+AngularJS+Node.js

( 簡體 字)
作者:和凌志類別:1. -> 資料庫 -> MongoDB
   2. -> 程式設計 -> 網路編程 -> AngularJS
   3. -> 程式設計 -> 網路編程 -> Node.js
譯者:
出版社:電子工業出版社全棧開發之道:MongoDB+Express+AngularJS+Node.js 3dWoo書號: 47807
詢問書籍請說出此書號!

缺書
NT售價: 340

出版日:9/1/2017
頁數:268
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121327223
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

為何寫一本全棧的書
為什么寫一本以全棧為主題的書呢?這還得從我的工作經歷說起。
在過去的十年,我一直從事與移動互聯網相關的工作,從早期的手機軟件開發到今天的移動應用,都離不開架構的支撐。在智能機出現之前,手機的軟件架構群雄并起,各家手機廠商都在打造自己軟件平臺,直到iOS、Android、Windows Phone的出現,形成三足鼎立的時代。在經歷了近五年的洗禮之后,進入移動互聯網的巔峰時代。而今,iOS、Android兩大平臺平分天下。
開發一款移動互聯網產品,從表面上來說,似乎只需要做一個APP,包括iOS和Android APP;其實,如果想讓上線的產品運營起來,就沒這么簡單了。通常,一個活躍度很高的產品,都是一款具有生態系統支撐的平臺,它包括。iOS APP、Android APP、微信公眾號、PC網頁、強大的后臺管理,一個都不能少。如果采用傳統的開發技術,打造這樣的一款產品,需要組建一支十幾人的開發團隊,人員一多,溝通的成本可想而知。
移動互聯網產品的一個最大特點是,一旦產品投放市場得到了用戶的認可,其版本迭代更新非常之頻繁。無形中,對團隊的開發效率提出了更高的要求。
無論是iOS還是Android,APP原生開發模式的最大弊端是版本的迭代與升級的任務繁重。為了解決這個問題,才引入了HTML5的技術。從開發的技術工種來看,分為APP(iOS、Android)工程師、前端工程師、后端工程師。這三個角色中,前端工程師直接面向終端用戶,是產品的門面起著一個橋梁的作用。如果后臺選用PHP、Java之類的技術,前端工程師除了網頁的制作之外,其他可做的非常有限,畢竟前端技術局限于HTML、CSS和JavaScript。因為角色的分工比較發散,以致開發效率難以提升。為了解決開發效率和運維靈活性的問題,我們希望從前端尋求到一個突破口。
眾所周知,前端工程師身懷三大法寶:HTML、CSS和JavaScript。從編程語言講,這些前端開發語言它既偏離APP的原生開發語言(Objective-C 或 Swift)語音,又與后臺的開發語言(常用的Java)語音有著明顯的差異。雖然JavaScript帶有“Java”一詞,但JavaScript與Java之間的關系如同雷鋒與雷峰塔之間的關系,二者相去甚遠。那么,有沒有一種框架可以讓前端開發人員“通吃”后臺呢?
一個偶然機會,我接觸到了全棧(Full Stack)的概念,并瞬間被它的理念所吸引。這里說的全棧,不是傳統的LAMP(Linux、Apache、MySQL、PHP),而是一種全新的以前端為主導的框架,所謂“大前端”、“全端”,就是指的是以前端為核心的框架。最終,我把框架選型聚焦在MEAN(MongoDB、Express、AngularJS、Node.js)上。MEAN全棧技術框架所用到的每個組件(MongoDB、Express、AngularJS和Node.js),都是基于JavaScript開發語言的。原本JavaScript是為網頁設計的語言,但自從有了Node.js之后,JavaScript的春天來了,前端工程師也可以寫后臺了。Node.js讓前端開發像子彈一樣飛!
開發一個產品之前,我們總會糾結應該選擇怎樣的技術框架。的確,框架的選型很重要,它直接決定了這個產品未來的走向,技術的選擇需要考慮幾個主要因素,其中包括自身所掌握的技能、軟/硬件環境、生產環境的部署、產品上線后的運維等。
選用MEAN全棧技術,可以快速地實現敏捷開發,尤其是到了產品的運營階段,其優勢表現得非常明顯。我們知道,今天的任何一款移動互聯網產品,離不開微信公眾號的推廣,大多出彩的產品,在它的微信公眾號內,所展示的是一套完整的業務邏輯,而不是幾個簡單的頁面。這就是說,一個運營成功的產品,對前端技術的依賴非常之高,更何況APP也可以采用混合開發模式(Native+HTML5)。
全棧工程師并不是“全能”工程師,它是通過一種全棧的框架,從繁重的技術中解脫了出來。正所謂:工欲善其事,必先利其器。這里的“器”,就是全棧框架,具體到這本書所推薦的,就是MEAN全棧框架。
盡管前端技術琳瑯滿目,但全棧框架少之又少,本書以MEAN為主線,
踐行全棧之路
用了MEAN全棧,它到底能帶來什么好處呢?這里,以我們發布的一款產品——“點時”為例。“點時”APP是一款輕量級的知識分享平臺,以語音分享為主。這樣的一款產品,從生態上講,該平臺包括:iOS APP、Android APP、微信、后臺的課程發布與運維管理。傳統的做法是項目開發組分為前端與后臺兩套人馬,因為進度不一,要么前端等后端,要么后端等前端,而我們采用的是MEAN全棧架構,不再區分前端與后臺,開發效率明顯提升。用了MEAN全棧框架,它帶來的最大好處是減少了前、后端之間的依賴。
讀者對象
這是一本講述MEAN全棧入門的書,而但不是一本從入門到精通的書。MEAN全棧蘊含的組件知識點有多個,每一個組件知識點都可以獨立成書。書中的每一個知識點都是為后面章節中的實例鋪墊的,泛泛的基礎知識不在本書講解范圍之內。
本書自始至終延續這樣的一個主題:如何通過一種框架(MEAN全棧),將前端和后臺(端)貫穿起來,讓前端工程師快速上手。
MEAN全棧技術涉及的技術點很多,它是前端(Front-end)技術向后臺(Back-end)的延伸。只有具備了前端的基礎,才能更好地理解全棧架構的思想。如果尚未接觸過HTML、CSS、JavaScript,那么,有必要“惡補”一些前端的基礎知識。
具體來說,這本書適宜的讀者有:
想學前端技術的APP(iOS、Android)開發工程師。隨著APP多年的發展,APP的優勢和短板日益明顯,原生技術無法解決的問題,需要前端技術(HTML5)來彌補,二者結合相得益彰,所以混合開發模式越來越受歡迎。如果一個APP開發工程師同時具備了原生與全端的技能,由“單翼”變成了“雙翼”,其技術路線的前景將越來越廣!
想學習后臺技術的前端工程師。傳統的互聯網開發,分為前端和后臺,在職場上也就出現了前端工程師和后端工程師。借助Node.js平臺和Express后端框架,前端工程師可以無縫地延伸到后臺技術。
如何閱讀本書
既然是全棧技術,其蘊含的知識點無疑有多個方面。為此,本書身分為入門篇、基礎篇、實戰篇。
入門篇:
這里沒有講述HTML的基礎,也沒有談論CSS概念,而是直接切入CSS框架,一款主流的CSS框架——Bootstrap。在我所經歷的互聯網項目中,Bootstrap是應用最為廣泛的。這里還講述了JavaScript特有的編程模式——函數表達式與函數式編程,在Node.js開發中,JavaScript把這些特有的閃光點發揮得淋漓盡致。“MEAN”全棧中所用到的數據交互格式和存儲格式均為JSON,學習全棧技術,必須掌握JSON的應用。MEAN全棧中所用到的數據格交互和存儲格式——JSON,因為其重要性而占用了獨立的一章。
在入門篇中,沒有講述jQuery技術及其AJAX,這是因為,在MEAN全棧框架中用到的AngularJS前端框架本身就兼具jQuery和AJAX的功能。
基礎篇:
從這篇開始,我們將正式進入Node.js的世界。盡管Node.js功能很強大,但其生態系統的構建還要借助于Express、AngularJS、MongoDB以及模板引擎。
在市面上,我們會看到很多權威指南系列的書,比如Node.js權威指南、AngularJS權威指南、MongoDB權威指南。這些書對每一個專業技能都講得很透,但很少談及它們之間的關系。既然Node.js可以獨立存在,而Express是基于Node.js之上的后端框架,對初學者來說,我們更希望在Express基礎之上開發。
那么,我們為何選用AngularJS呢?在吹響“全端”號角的今天,我們越來越強調前端框架的重要性。在前端的世界,AngularJS可謂玉樹臨風。在MEAN全棧中,Node.js和Express負責后端處理,而與網頁交互的正是AngularJS。因此,可以想象AngularJS在本書中所占比重之高。
關于AngularJS,這里要特別說明一點:本書講述的AngularJS、示例中所引用的AngularJS均為1.x版本,具體來說是1.4.6版本。AngularJS最新版本是2.x。或許讀者產生疑問,為何不用AngularJS最新的2.x版本呢?這是因為,它的2.x并不是在原有1.x上的升級,而是一個全新的版本。二者談不上兼容之說。業內普遍認為,AngularJS 1.x版本更成熟、應用更廣泛、可參考的資料更多。在項目開發時,選擇一個成熟的框架,十分重要!
把MongoDB數據庫應用到MEAN全棧中,可謂相得益彰。通過MongoDB,你會對全棧開發有一個完整的、全新的認知。
實戰篇:
學習一門編程技術,最有效的途徑還是實踐。對于書中出現的每個知識點,都輔以相關的代碼實例。每個篇章中的實例都不是獨立的,而是沿用延從易到難的線索。
實戰篇演示了四個實例,每個實例并不是獨立的,從知識銜接上看,是一環扣一環的。通常,一個完整的應用包括:數據與頁面之間的綁定、網絡請求、路由的分發、數據庫的增刪改查。我曾試著通過一個完整的應用講述以上知識點,發現越到工程的后期越發臃腫,前后邏輯關系太復雜,以至于理解起來破費周折。最終采取一個折中的方案:借用國外網站的經典MEAN全棧的示例,在原示例的基礎之上,對一些不易理解的地方,添加了補充的知識,正所謂“見招拆招”。
實戰篇中示例,都是基于MEAN全棧的演練,只是側重點有所不同,每個示例均附有完整的工程源碼。
本書的源碼
在學習本書示例代碼時,可以按照書中講解的步驟,一步一步地手工敲入所有代碼,也可以下載隨書所帶的源碼,本書所有的源代碼都可以從GitHub下載。
勘誤和支持
我盡最大的努力確保正文和代碼沒有錯誤,但隨著開發環境版本的變化,錯誤在所難免。如果讀者發現書中的任何錯誤,如錯別字或代碼片段無法運行等,希望您能及時給我反饋。您提交的勘誤不僅能幫助自己,還能讓其他讀者受益。
讀者可以在下載源碼的地方(GitHub)進行反饋,也可以通過后面的聯系方式與筆者溝通。
致謝
參與本書編寫的還有袁芳、和凌群、徐明志、胥方文、江美雙、和凌云、馬鈞君、林志紅、劉曉波。 在本書成稿的過程中,我得到了很多人的指點和幫助,客套話不再講太多。這里,特別感謝MEAN全棧的開源者,向開源精神致敬!每次賞析那些原創的示例,都能得到一次心靈的升華。
在本書出初版之前,我曾以本書的書稿,在給為臨沂大學本科生講授全棧開發課程中試用。令人欣慰的是,在學習全棧之前,學生都具備了一定的前端知識,通過MEAN全棧框架,學生們很快我為學生們敢于“質問”的精神點完成了一個從前端到后端的項目。贊。
感謝電子工業出版社的同仁,正是你們卓有成效的工作使我保持了敲擊代碼的激情。

作 者
2017年8月
內容簡介:

全棧(Full Stack)是一種全新的以前端為主導的框架,框架選型聚焦在MEAN(MongoDB、Express、AngularJS、Node.js)上。選用MEAN全棧技術,可以快速地實現敏捷開發,尤其是到了產品的運營階段,其優勢表現得非常明顯。本書主要介紹MEAN全棧技術,分為入門篇、基礎篇和實戰篇,入門篇對全棧進行了概述,基礎篇重點介紹了全棧的四個主要技術,即MongoDB、Express、AngularJS、Node.js,實戰篇則通過四個常用的實例來引導讀者循序漸進地掌握全棧開發的思路。本書重在講述全棧開發的思想,自始至終延續這樣的一個主題:如何通過一種框架(MEAN全棧),將前端和后臺(端)貫穿起來,讓前端工程師快速上手。

目錄:

入 門 篇
第1章 Bootstrap基礎 2
1.1 概述 2
1.2 Bootstrap開發環境 3
1.2.1 Bootstrap的安裝 3
1.2.2 Bootstrap的加載 5
1.3 Bootstrap 常用工具 6
1.3.1 Bootstrap代碼編輯工具 6
1.3.2 Bootstrap設計工具——Layout IT 7
1.4 Bootstrap 布局 8
1.4.1 HTML標準模板 8
1.4.2 自定義CSS 10
1.4.3 響應式布局的實現 12
1.4.4 禁用響應式布局 16
1.5 小結 16
第2章 JavaScript基礎 17
2.1 概述 17
2.2 JavaScript 語法 17
2.2.1 變量中的聲明與賦值 18
2.2.2 如何判斷兩個字符串是否相等 19
2.2.3 創建JavaScript對象的三種方法 21
2.2.4 函數聲明與函數表達式 23
2.2.5 可立即調用的函數表達式 25
2.2.6 循環的實現 27
2.2.7 防止JavaScript自動插入分號 28
2.2.8 嚴格模式 29
2.3 如何運行與調試JavaScript代碼 30
2.3.1 把JavaScript代碼內嵌到HTML頁面中 30
2.3.2 通過Node.js運行JavaScript代碼 31
2.4 JavaScript的面向對象設計思想 32
2.5 JavaScript的異步編程模式 33
2.5.1 Promise對象 34
2.5.2 生成Promise實例對象 34
2.5.3 Promise原型方法 35
2.5.4 Promise的catch方法 36
2.5.5 Promise在Node.js中的應用 37
2.6 如何在HTML中嵌入JavaScript 37
2.6.1 <script>標簽 37
2.6.2 <script>標簽的位置 38
2.6.3 嵌入JavaScript代碼與外部文件引用 39
2.7 JavaScript與JSON 39
2.7.1 JSON概述 39
2.7.2 什么是JSON 40
2.7.3 JSON語法規則 40
2.8 小結 42
基 礎 篇
第3章 Node.js入門指南 44
3.1 概述 44
3.2 Node.js生態 44
3.3 Node開發環境的搭建 45
3.4 Node.js驗證 45
3.5 第一個Node.js工程 46
3.5.1 創建Node.js工程 46
3.5.2 運行Node.js工程 47
3.6 Node.js的module應用 50
3.7 Node.js 編碼規范 52
3.8 小結 53
第4章 Express——后端框架 54
4.1 概述 54
4.2 第一個Express工程 54
4.2.1 Express工程的創建 54
4.2.2 Express的路由 55
4.2.3 Express的中間件 56
4.2.4 設置靜態目錄 57
4.3 Express中的Cookie與Session 58
4.3.1 Cookie是如何工作的 58
4.3.2 Session是什么 58
4.3.3 為什么需要Session 59
4.3.4 Session應用場景 59
4.4 Express中的網絡請求方法 59
4.4.1 req.params 60
4.4.2 req.query 61
4.4.3 req.body 61
4.4.4 網絡請求方法 61
4.5 Express中的GET與POST請求 62
4.5.1 GET請求 62
4.5.2 post請求 62
4.6 通過Express 實現登錄頁面 63
4.6.1 get請求驗證 66
4.6.2 post請求驗證 68
4.7 小結 69
第5章 Express的模板引擎 70
5.1 模板引擎概述 70
5.1.1 什么是模板引擎 70
5.1.2 模板引擎的選擇 71
5.1.3 服務器端模板引擎 71
5.2 模板引擎的種類 72
5.2.1 模板引擎Jade 72
5.2.2 模板引擎Handlebars 73
5.2.3 模板引擎EJS 73
5.3 Express中的EJS 73
5.3.1 創建工程Express工程 74
5.3.2 引入工程的依賴包(dependency) 74
5.3.3 啟動應用 76
5.3.4 EJS模板引擎的觸發 77
5.4 小結 78
第6章 AngularJS——Google前端框架 79
6.1 AngularJS概述 79
6.2 AngularJS 常用指令 81
6.2.1 AngularJS 指令概述 81
6.2.2 AngualrJS指令:ng-app 81
6.2.3 AngularJS指令:ng-init 82
6.2.4 AngularJS表達式 82
6.2.5 AngularJS指令:ng-model 83
6.2.6 ng-app與ng-model示例 83
6.2.7 ng-app與ng-model常見錯誤分析 84
6.2.8 {{ }}的應用 85
6.2.9 指令:ng-bind 86
6.2.10 指令:ng-click 86
6.3 AngularJS構建單頁面應用 86
6.3.1 單頁面應用的優勢 86
6.3.2 輕松構建單頁面應用 88
6.3.3 單頁面應用的實現 89
6.4 AngularJS的加載 93
6.4.1 AngularJS的引用 93
6.4.2 加載AngularJS靜態資源庫 94
6.5 AngularJS 的注入 94
6.5.1 依賴注入 94
6.5.2 依賴注入的行內聲明 97
6.6 AngularJS 的Module 99
6.6.1 AngularJS Module 概述 99
6.6.2 AngularJS的Module 應用 100
6.7 AngularJS 控制器 102
6.7.1 控制器命名方法 102
6.7.2 AngularJS 控制器的創建 102
6.7.3 AngularJS控制器的應用 103
6.8 AngularJS的數據綁定 105
6.9 $scope用法 106
6.10 小結 109
第7章 MongoDB——文檔數據庫 110
7.1 MongoDB概述 110
7.1.1 MongoDB簡介 110
7.1.2 MongoDB的歷史 110
7.1.3 MongoDB的優勢 111
7.1.4 MongoDB的安裝 111
7.1.5 啟動MongoDB 112
7.2 數據庫存儲機制 112
7.2.1 關系型數據庫 112
7.2.2 NoSQL數據庫 112
7.3 MongoDB數據結構 113
7.3.1 文檔 113
7.3.2 集合 114
7.3.3 MongoDB存儲格式——BSON 115
7.4 Mongo Shell 116
7.4.1 Mongo Shell簡介 116
7.4.2 運行Mongo Shell 116
7.4.3 Mongo Shell基本操作 117
7.5 MongoDB文檔操作 118
7.5.1 創建一個文檔 118
7.5.2 查詢所有文檔 118
7.5.3 查詢某一個文檔 119
7.5.4 文檔的更新 120
7.5.5 文檔的刪除 120
7.5.6 刪除集合 121
7.6 _id和ObjectId 121
7.7 MongoDB管理工具 121
7.7.1 MongoDB可視化工具——Robomongo 121
7.7.2 Robomongo的安裝 122
7.8 用mongoose操作MongoDB 125
7.8.1 mongoose概述 125
7.8.2 初識mongoose 125
7.8.3 mongoose的安裝 126
7.8.4 mongoose連接數據庫 126
7.8.5 Schema 127
7.8.6 Model及其操作 127
7.9 小結 132
實 戰 篇
第8章 應用實例1——用戶管理 134
8.1 概述 134
8.2 實現的思路 135
8.3 Node.js工程結構 135
8.3.1 創建一個Node服務 136
8.3.2 構建index.html頁面 136
8.3.3 構建AngularJS頁面 137
8.3.4 構建controller數據 138
8.3.5 構建路由 138
8.3.6 連接MongoDB 140
8.4 簡單的用戶管理操作 142
8.4.1 增加一條記錄 142
8.4.2 刪除一條記錄 144
8.4.3 編輯與更新一條記錄 146
8.4.4 $set與$unset的應用 149
8.5 小結 150
第9章 應用實例2——登錄管理 151
9.1 概述 151
9.2 安裝Express 151
9.3 創建Express工程 151
9.4 構建登錄頁面 157
9.4.1 構建登錄的靜態頁面 157
9.4.2 構建路由 159
9.4.3 添加路由中間件 161
9.5 構建注冊頁面 161
9.5.1 靜態頁面的創建 161
9.5.2 構建注冊頁面的路由 163
9.5.3 添加路由中間件 166
9.6 小結 166

第10章 應用實例3——記事本 167
10.1 概述 167
10.2 實現思路 168
10.3 構建AngularJS應用 168
10.3.1 控制器 169
10.3.2 模塊 171
10.3.3 模板 172
10.3.4 布局模板 172
10.3.5 路由 173
10.3.6 工廠方法 175
10.3.7 頁面跳轉 177
10.3.8 $routeProvider 180
10.3.9 過濾器 182
10.3.10 $index的應用 184
10.3.11 控制器之間的傳值 185
10.3.12 $rootScope 185
10.3.13 使用$watch監控數據模型的變化 186
10.4 創建Express工程 189
10.5 創建MongoDB 190
10.5.1 連接MongoDB 190
10.5.2 創建mongoose的model 191
10.6 創建RESTful API 191
10.6.1 GET請求 191
10.6.2 POST請求 192
10.6.3 查找指定的對象 193
10.6.4 更新 194
10.6.5 刪除 194
10.7 構建MEAN工程 194
10.7.1 路由 194
10.7.2 構建動態頁面 196
10.7.3 $http的應用 196
10.7.4 基于$http的工廠方法 197
10.7.5 RESTful API的調用 198
10.7.6 基于$resource的工廠方法 199
10.7.7 創建一條記錄 199
10.7.8 查看記錄詳情 201
10.7.9 更新記錄 203
10.7.10 刪除記錄 206
10.7.11 運行結果 207
10.8 小結 208
第11章 應用實例4——商品管理 210
11.1 概述 210
11.2 實現思路 211
11.2.1 開發環境的搭建 211
11.2.2 創建Express工程 211
11.2.3 安裝Monk 212
11.3 數據庫管理 212
11.3.1 構建數據庫模擬數據 213
11.3.2 通過Express創建訪問數據庫的API 213
11.4 重構頁面 219
11.4.1 引入AngularJS 219
11.4.2 通過AngularJS重構首頁 220
11.4.3 控制器的實現 222
11.4.4 when方法 225
11.4.5 $resource的調用 225
11.4.6 文檔對象的創建 226
11.4.7 $location的應用 233
11.4.8 文檔對象的編輯 234
11.4.9 $routeParams的應用 242
11.4.10 文檔對象的刪除 243
11.5 小結 245
參考文獻 247
序: