JavaScript開發框架權威指南 (JavaScript Frameworks for Modern Web Dev)
內容描述
JavaScript是現代Web開發必不可少的編程語言,但JavaScript的生態系統包括庫、框架以及工具都在快速地發展且日益龐大。程序員學習的需求和麵臨的挑戰也相應地增加。
JavaScript開發框架quanwei指南涵蓋了在開發過程中常用的各種JavaScript工具,以幫助讀者在大量流行的JavaScript工具中做選擇。全書分為16章,從開發工具、模塊加載器、客戶端框架、服務端框架數據庫交互、通信、管理控制流和其他有用框架等幾個方面,涵蓋了Bower、Grunt、Yeoman、PM2、RequireJS、Browserify、Knockout、AngularJS、Kraken、Mach、Mongoose、Knex、Bookshelf、Faye、Q、Async.js、Underscore和 Lodash等框架和庫。全書涵蓋了客戶端和服務器端的開發,通過細致的講解、詳細的代碼示例,闡明瞭這些工具的用法。
JavaScript是現代Web開發必不可少的編程語言,但JavaScript的生態系統包括庫、框架以及工具都在快速地發展且日益龐大。程序員學習的需求和麵臨的挑戰也相應地增加。
目錄大綱
第1章Bower 1
1.1準備工作1
1.2配置Bower 2
1.3清單文件(Manifest) 2
創建新的清單文件3
1.4查找、添加和刪除Bower包3
1.4.1查找包3
1.4.2添加包3
1.4. 3刪除包5
1.5語義化版本控制5
1.6維護依賴鏈6
1.7創建Bower包7
1.7.1選擇有效的包名7
1.7.2使用語義化版本(Semver)的
Git標籤7
1.7.3將軟件包發布到註冊中心7
1.8小結8
第2章Grunt 9
2.1安裝Grunt 10
2.2 Grunt是如何工作的10
2.2.1 Gruntfile.js 10
2.2.2任務(Tasks) 11
2.2.3插件(Plugins) 11
2.2.4配置12
2.3將Grunt添加到項目中12
保持合理的Grunt結構12
2.4與任務共舞14
2.4.1配置管理14
2.4.2任務描述15
2.4.3異步任務15
2.4.4任務依賴16
2.4.5多任務16
2.4.6多任務中的Options 17
2.7模板配置18
2.4.8命令行選項19
2.4.9提供反饋19
2.4.10錯誤處理20
2.5操作文件系統20
2.5.1源-目標映射20
2.5.2監視文件變化22
2.6創建Grunt插件25
2.6.1開始25
2.6.2創建任務 26
2.6.3將任務發佈到npm 28
2.7總結28
2.8相關資源29
第3章Yeoman 30
3.1安裝Yeoman 30
3.2創建第一個項目30
3.2.1子命令33
3.3創建你的第一個腳手架34
3.3. 1 Yeoman腳手架是一個Node
模塊34
3.3.2子腳手架35
3.3.3定義二級命令39
3.3.4可組合性41
3.4小結41
3.5相關資源42
第4章PM2 43
4.1安裝43
4.2與進程一起工作43
4.2.1從錯誤中恢復46
4.2.2監控文件變化47
4.3監控日誌48
4.4監控資源佔用49
4.41監控本地資源49
4.4.2監控遠程資源49
4.5進程的高級管理52
4.5.1通過JSON方式配置應用52
4.6多核處理器的負載均衡55
4.6.1 0秒宕機的部署方式57
4.7小結59
4.8相關資源59
第5章RequireJS 60
5.1運行示例61
5.2使用RequireJS 61
5.2.1安裝62
5.2.2配置62
5.2.3應用模塊和依賴64
5.2.4路徑和別名66
5.2.5 Shims 69
5.2.6加載器插件73
5.2.7緩存清除78
5.3 RequireJS優化80
5.3.1配置r.js 80
5.3.2運行r .js命令81
5.4小結82
第6章Browser ify 84
6.1 AMD API與CommonJS對比84
6.2安裝Browserify 85
6.3創建你的第一個Bundle 85
6.4可視化依賴樹87
6.5發生變化時重新打包文件88
6.5.1通過Grunt監聽文件變化88
6.5.2通過Watchify監聽文件
變化88
6.6使用多個打包文件90
6.7 Node方式92
6.7.1模塊解析方案和NODE_PATH
環境變量93
6.7.2依賴管理95
6.8定義瀏覽器指定模塊96
6.9用Transforms擴展Browserify 97
6.9.1 brfs 97
6.9 .2 folderify 98
6.9.3 bulkify 98
6.9.4 Browserify-Shim 99
6.10小結100
6.11相關資源100
第7章Knockout 101
7.1 View、Model與View Model 102
7.1.1菜譜列表103
7.1.2菜譜詳情106
7.2綁定視圖模型到DOM 108
7.3視圖模型與表單109
7.3.1切換到“編輯”模式109
7.3.2更改菜譜的標題112
7.3.3更改菜譜的Serving與
Cooking Time 112
7.3.4添加與刪除食材114
7.3 .5操作步驟118
7.3.6引文119
7.4自定義組件120
7.4.1 input-list組件的視圖模型120
7.4.2 input-list模板121
7.4.3註冊input-list 件123
7.5 Subscribable:簡單的消息傳遞124
7.6小結126
7.7相關資源127
第8章AngularJS 128
8.1聲明式Web編程128
8.1.1命令式編程128
8.1.2聲明式編程129
8.2 Module:創建鬆散耦合程序的基石130
8.3指令:DOM的抽象132
8.4加入邏輯134
8.4.1 Scope與原型繼承134
8.4.2用Controller操作Scope 135
8.5通過Service與依賴注入(DI)
實現鬆散耦合138
8.5.1依賴注入138
8.5. 2簡單的Controller與復雜的
Service 139
8.6創建路由142
8.6.1路由參數143
8.6.2路由的Resolve 144
8.7創建複雜表單145
8.7.1表單驗證146
8.7.2條件邏輯150
8.7.3列表151
8.8小結153
8.9相關資源154
第9章Kraken 155
9.1環境感知的配置156
9.2註冊基於配置的中間件162
9.3結構化路由註冊165
9.3.1索引配置165
9.3.2目錄配置166
9.3.3路由配置167
9.4 Dust模板169
9.4.1上下文及引用169
9.4.2片段171
9.4.3迭代172
9.4.4條件句173
9.4.5局部模板173
9.4.6塊174
9.4.7過濾器175
- 4.8上下文輔助器176
9.4.9 Dust輔助器182
9.4.10使用Kraken 186
9.5小結200
9.6相關資源200
第10章Mach 202
10.1章節例子202
10.2安裝203
10.3 Mach - Web服務203
10.3.1 HTTP路由205
10.3 .2建立連接210
10.3.3公共的中間件212
10.3.4路由重寫226
10.3.5主機映射228
10.3.6自定義中間件232
10.4 Mach-HTTP客戶端234
10.5 Mach - HTTP代理236
10.6小結239
第11章Mongoose> 240
11.1 MongoDB的基本概念240
11.2 Mongoose的一個簡單示例243
11.2.1針對JSON數據創建一個
Mongoose模式243
11.2.2使用Mongoose導入數據244
11.2.3通過Mongoose查詢數據247
11.3使用結構( Schemas) 248
11.3.1數據類型248
11.3.2嵌套結構250
11.3.3默認屬性值250
11.3.4必要屬性251
11.3.5輔助索引251
11.3.6結構校驗252
11.3.7結構引用255
11.3. 8結構中間件258
11.4使用模型和文檔259
11.4.1文檔實例方法262
11.4.2文檔虛擬263
11.4.3靜態模型方法265
11.5使用查詢266
11.5.1 Model.find() 266
11 .5.2使用查詢運算符查找文檔272
11.6小結278
第12章Knex和Bookshelf 279
12.1 Knex 279
12.1.1安裝命令行工具280
12.1.2把Knex添加到你的項目280
12.1.3配置Knex 280
12.1.4 SQL查詢構建器281
12.1.5遷移腳本287
12.1.6種子腳本291
12.2 Bookshelf 291
12.2.1什麼是對象映射關係?292
12.2.2創建Bookshelf模型292
12.2.3關係299
12.3小結306
12.4相關資源307
第13章Faye 308
13.1 HTTP、Bayeux和WebSocket 308
13.1.1 WebSocket 310
13.1.2 Bayeux協議310
13.2開始使用Faye 312
13.3發布/訂閱消息系統313
13.4小結318
13.5相關資源318
第14章Q 319
14.1時間就是一切319
14.2 Promise對比回調函數322
14.3 Q的Promise 324
14.3.1 Deferreds和Promises 324
14.3.2值和錯誤328
14.3.3報告進度333
14.3.4終點336
14.4控制流338
14.4.1順序流338
14.4.2平行流339
14.4.3管道流341
14.5小結342
14.6相關資源343
第15章Async.js 344
15.1順序流345
15.2並行流346
15.3管線流348
15.4循環流352
15.4.1為真則循環執行352
15.4.2為假則循環執行354
15.4.3循環重試355
15.4.4無限循環357
15.5批處理流358
15.5.1異步隊列358
15.5.2異步負載359
15.6小結361
第16章Underscore和Lodash 362
16.1安裝及用法363
16.2聚合和索引364
16.2.1 countBy() 364
16.2.2 groupBy() 365
16.2.3 ind exBy() 366
16.3選擇367
16.3.1從集合中選擇數據367
16.3.2從對像中選擇數據369
16.4鍊式調用373
16.5函數計時375
16.5.1 defer() 375
16.5.2 debounce() 377
16.5. 3 throttle() 378
16.6模板380
16.6.1模板內的循環及其他
JavaScript代碼381
16.6.2書寫不加鱷魚標記的代碼382
16.6.3從模板中獲取數據對象383
16.6.4默認模板數據384
16.7小結385
16.8相關資源386a
作者介紹
im Ambler是來自美國田納西州那什維爾的一名軟件工程師。他對編程的熱情來自於父親。在他小的時候,他的父親就向他介紹了Commodore 64電腦。Tim是幾個流行的開源項目的作者,其中whenLive已經被GitHub員工採用。作為會議演說家和多產的作家,Tim多次被在線出版物推薦,如JavaScript Weekly和Node Weekly。Tim目前與他的妻子和2隻貓生活在南部。讀者可以在Twitter上@tkambler關注他。
Nicholas Cloud是一名軟件工程師,居住在非常潮濕的城市聖路易斯。過去十幾年裡,他利用自己的技能成就一番成功事業。通過JavaScript、C+和PHP,他開發了大量適用於多終端的Web應用、Web服務、桌面應用。Nicholas是開源軟件的有力支持者,致力於userland項目,並寫了幾個自己的開源庫。在業餘時間,他在不同的用戶組發言、參加會議、寫書、寫技術文章、寫博客。他的Twitter是@nicholascloud。