-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
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書號
詳細書籍分類

大型JavaScript應用最佳實踐指南

( 簡體 字)
作者:奇舞團類別:1. -> 程式設計 -> 網路編程 -> Javascript
譯者:
出版社:電子工業出版社大型JavaScript應用最佳實踐指南 3dWoo書號: 46127
詢問書籍請說出此書號!

缺書
NT售價: 325

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

譯者序:

前言:

關于作者
Adam Boduch 在開發大型JavaScript應用方面有近10年的工作經驗。在轉型為前端工程師之前,他曾使用Python與Linux參與了許多大型云計算產品的構建。Adam擁有非常豐富的開發經驗,擅長處理復雜的場景,提高軟件的可擴展性。他編寫了很多JavaScript方面的書籍,其中包括 Lo-Dash Essentials,并且,他還熱衷于優化用戶體驗和性能。
Adam現居住于多倫多,是Virtustream的一名高級軟件工程師。
我想在此感謝我的媽媽和爸爸。
關于審校者
August N. Marcello III是一位充滿激情的軟件工程師,在客戶端的Web應用架構相關的設計、實現、部署方面,有著近20年的工作經驗。他專注于基于SaaS創造良好的用戶體驗,并將其傳播到Web生態系統,這無論從個人還是從專業角度來說都極具價值。對新興通用技術的熱愛以及對先進的JavaScript平臺的專注,驅動著他在技術上精益求精。在工作之余,他會參加越野跑、山地自行車騎行,或者陪伴家人和朋友。他的個人網站為:www.augustmarcello.com。
非常感謝Chuck、Mark、Eric和Adam,很榮幸能夠跟他們一起工作和學習。謝謝我的家人、朋友,還有我所經歷的一切。


Yogesh Singh畢業于印度JSS技術教育學院。他是一位全棧Web開發者,在服務端Web開發棧方面(ASP.NET以及Node.js)很有經驗,而且熟練掌握HTML、CSS以及JavaScript。
Yogesh熱愛JavaScript以及相關的庫和框架(Backbone、AngularJS、jQuery和Underscore)。
他最開始從事的是數據挖掘和數據倉庫方面的工作,在數據庫開發方面十分專業。他是MSSQL的微軟認證解決方案成員(MCSA)。
Yogesh自學能力很強,喜歡學習算法和數據結構,并在斯坦福大學Coursera上獲得了算法課的結業證明。
他曾就職于OLX India和MAQ Software,目前為Gainsight公司的全棧開發者。
業余時間,他喜歡在http://mylearning.in上寫博客。他的LinkedIn簡歷地址為https://www.linkedin.com/in/yogesh21。
感謝我的家人,朋友以及同事的支持。


Nikolay Sokolov是一名軟件工程師,他在云計算、自動化部署,還有企業軟件開發方面有著豐富的經驗。現在就職于Tonomi(http://tonomi.com/),負責基于彈性組件模型分發云應用的自動管理包。
可通過https://twitter.com/chemikadze隨時聯系他。


Serkan Yersen是一名洛杉磯的軟件開發者。他是一些開源庫的作者,例如:ifvisible.js、underscore.py以及kwargs.js。Serkan專門從事構建大型JavaScript應用,以及為用戶廣泛的應用創建UI。2006年至2012年,就職于http://www.jotform.com/期間,他開發了一個復雜的表單生成器,供上百萬用戶使用。現在,他就職于Home Depot和Redbeacon(http://www.redbeacon.com/),負責Web應用開發。你可以訪問他的網站:http://serkan.io/。

譯者簡介
本書翻譯工作由月影領銜的奇舞團翻譯小組承擔,由王韋華、黃小璐、黃薇負責翻譯。
王韋華
網名Aztack,前端技術專家。曾就職百度、奇虎360等國內知名互聯網公司。擁有豐富的Web前端開發經驗,擅長JavaScript、Ruby、Java、C++等語言。
個人博客:https://aztack.wang
黃小璐
畢業于華中科技大學計算機學院。現為奇虎360軟件開發工程師。曾參與開源項目[stcjs](https://github.com/stcjs/stc)(高性能前端工作流系統)。參與翻譯了《高性能HTML5》等書。
黃薇
畢業于中山大學,于2013年加入奇舞團,近期參與了Nova.js(Web Component框架)、聲享(在線制作PPT)等項目,對大型 JavaScript 應用有濃厚的興趣和豐富的開發經驗。
以上三位譯者曾共同參與《移動Web手冊》一書的翻譯工作。
讀者可掃描以下二維碼關注奇舞團周刊。

前言
能夠一直正常運行的應用只是特例,大部分的JavaScript應用多多少少都有些問題。而這些問題產生的原因是由于我們總是習慣性地忽略可擴展性。這本書介紹了如何通過擴展前端架構來提高軟件質量。擴展JavaScript應用是一件有趣的事情,需要考慮很多因素:用戶、開發者、開發環境、瀏覽器環境等。我們的任務就是全面考慮這些因素,從而提供最佳的用戶體驗。我們要擴展什么?為何要擴展?本書將為大家解答這些問題。
本書內容
第1章,擴展JavaScript應用,介紹了何為可擴展的JavaScript應用,以及擴展JavaScript應用與擴展其他應用的區別。
第2章,可擴展性的影響因素,介紹了如何理解可擴展的需求,設計出更好的架構。
第3章,組件復合,介紹了構成架構核心的模式,以及如何以之為藍圖組合組件。
第4章,組件的通信與職責,介紹了組件之間的通信是如何制約擴展的。組件的通信模式功能有決定性作用。
第5章,尋址和導航,詳細介紹了擁有指向不同資源的URI的大型Web應用,以及如何設計才能應對不斷增長的URI數量。
第6章,用戶偏好和默認設置,介紹了設置用戶偏好的必要性,以及可配置的組件對擴展應用的重要性。
第7章,加載時間和響應速度,介紹了文件數量的增加是如何降低應用效率的。在添加新功能時,要有所舍棄,才能保證UI的響應速度。
第8章,可移植性和測試,介紹了如何編寫不依賴于特定環境的JavaScript代碼,包括創建可移植的模擬數據和測試代碼。
第9章,縮小規模,介紹了移除無用或錯誤組件對擴展系統其他部分的重要性。
第10章,處理錯誤,介紹了優秀的JavaScript架構不會因為某個組件的錯誤而崩潰。許多時候,在設計時充分考慮對錯誤的處理是成功擴展的關鍵。
閱讀本書的條件
? NodeJS
? 代碼編輯器/集成開發環境
? 一個現代Web瀏覽器
本書讀者
本書的目標讀者是對前端架構感興趣的高級JavaScript工程師。閱讀本書無須預備框架知識,但本書介紹的大部分概念都來自于框架,例如Backbone、Angular、Ember。閱讀本書需要扎實的JavaScript語言知識基礎,本書中所有的示例代碼都使用ECMAScript 6語法編寫。
約定
在閱讀本書時,你會發現許多代表不同類型信息的不同文本樣式。這里展示了一些例子及其含義詳解。
正文中的代碼、數據庫表名、文件夾名、文件名、文件后綴、路徑、URI示例、用戶輸入,以及Twitter用戶名等均按以下格式展示:“以users/31729為例。路由器應該找到一個模式,能夠匹配該字符串,并能夠提取出變量31729”。
代碼塊按以下格式展示:
// 渲染試圖的各個部分。
// 各部分可能有renderer,也可能沒有。
// 但不管有沒有renderer,內容都會被返回。

警告和重要注解都會按此格式展示。

提示和技巧都會按此格式展示。
下載示例代碼
你可以從http://www.broadview.com.cn下載所有已購買的博文視點書籍的示例代碼文件。
勘誤表
雖然我們已經盡力確保內容的準確性,但錯誤仍然可能存在。如發現任何錯誤,可登錄博文視點官網http://www.broadview.com.cn 提交勘誤信息。一旦勘誤信息被本書作者或編輯確認,即可獲得博文視點獎勵積分,可用于兌換電子書。讀者可以隨時瀏覽圖書頁面,查看已發布的勘誤信息。
內容簡介:

本書將帶你設計和實現能從多個維度(如尋址能力、可配置性和性能)可伸縮的JavaScript的應用程序體系架構;了解常見的JavaScript縮放陷阱,并通過真實的解決方案和策略解決這些問題。內容包括:確定和評估應用程序的外部擴展影響力,創建構成大規模JavaScript應用程序的組件,對可擴展組件間的通信進行設計,設計一個不受限于環境的便攜的且可測試的應用程序,等等。

目錄:

1 擴展JavaScript 應用 ... 1
影響擴展的因素 ..... 2
對可擴展的需要 ..... 2
不斷增長的用戶 ..... 3
添加新功能 ....... 3
雇傭更多的開發者 ..... 4
架構角度 ...... 5
瀏覽器是一個獨特的環境 ..... 5
組件設計 ....... 7
組件通信 ....... 7
加載時間 ....... 8
響應性 ....... 9
可尋址性 ....... 9
可配置性 ....... 10
架構性取舍 ..... 11
確定不可變內容 ..... 11
從開發的便捷性考慮性能 ...... 11
性能的可配置性 ..... 12
從可替換性考慮性能 ...... 13
可尋址性的開發便捷性 ...... 13
性能的可維護性 ..... 13
減少功能以提高可維護性 ...... 14
利用框架 ....... 15
框架與類庫 ..... 16
一致地實現模式 ..... 16
內建的性能 ....... 16
利用社區智慧 ..... 16
框架并非天生支持擴展 ...... 17
小結 ...... 17
2 可擴展性的影響因素 .... 19
擴展用戶 ...... 20
許可證費用 ....... 20
訂閱費用 ....... 21
消耗費用 ....... 21
廣告支持 ....... 21
開源 ....... 22
與用戶溝通 ....... 23
支持機制 ....... 24
反饋機制 ....... 25
提示用戶 ....... 26
用戶維度 ....... 26
擴展用戶示例 ..... 27
擴展功能 ...... 28
應用價值 ....... 28
“殺手級”功能與“殺死”應用的功能 .... 29
數據驅動的功能 ..... 30
與競品比較 ....... 30
修改已有的功能 ..... 31
支持用戶分組和角色 ...... 32
增加新服務 ....... 32
擴展功能示例 ..... 34
開發的可擴展性 ..... 34
尋找開發資源 ..... 35
開發職責 ....... 36
資源過多 ....... 36
擴展開發示例 ..... 37
影響因素檢查表 ..... 37
用戶檢查清單 ..... 38
功能清單 ....... 39
開發者清單 ....... 41
小結 ...... 41
3 組件組合 .... 43
通用組件 ...... 44
模塊 ....... 44
路由器 ....... 46
模型/集合 ...... 50
控制器/視圖 ...... 53
模板 ....... 55
應用特定的組件 ..... 56
擴展通用組件 ..... 56
識別公用數據、功能 ...... 56
擴展路由器組件 ..... 57
擴展模型/集合 ...... 58
擴展控制器/視圖 ...... 59
將功能映射到組件 ..... 60
通用功能 ....... 61
特定功能 ....... 61
解構組件 ...... 62
維護和調試組件 ..... 62
重構復雜組件 ..... 64
可插拔的業務邏輯 ..... 64
擴展與配置 ....... 65
無狀態的業務邏輯 ...... 65
組織組件代碼 ..... 66
小結 ...... 67
4 組件的通信與職責.... 69
通信模型 ...... 69
消息傳遞模型 ..... 70
事件模型 ....... 70
通信數據結構 ..... 71
命名約定 ....... 71
數據格式 ....... 72
公共數據 ....... 73
可追蹤的組件通信 ..... 74
訂閱事件 ....... 74
全局事件日志 ..... 74
事件的生命周期 ..... 77
通信的開銷 ..... 77
事件的頻率 ....... 78
回調函數執行時間 ...... 80
事件復雜度 ....... 81
通信責任區 ..... 82
后端API ....... 82
Web Socket 用于更新狀態 ...... 83
DOM 更新....... 85
松耦合的通信 ..... 86
替換組件 ....... 86
應對意外事件 ..... 87
組件分層 ...... 90
事件流向 ....... 90
開發者的職責 ..... 91
構建代碼思維導圖 ...... 91
小結 ...... 92
5 尋址和導航 .... 93
實現路由的方法 ..... 93
Hash URI ....... 94
傳統URI ....... 94
路由是如何工作的 ..... 95
路由的職責 ....... 95
路由事件 ....... 96
URI 的結構和模式 ..... 96
編碼信息 ....... 97
設計URI ....... 97
將資源映射到URI ..... 99
手動創建URI ..... 99
自動生成資源URI ...... 99
觸發路由 ..... 103
用戶行為 ....... 103
重定向用戶 ..... 104
路由配置 ..... 104
靜態路由聲明 ..... 105
注冊事件 ....... 105
禁用路由 ....... 105
故障排查 ..... 108
路由器沖突 ..... 108
記錄初始配置 ..... 110
記錄路由事件 ..... 110
處理非法資源的狀態 ...... 110
小結 ...... 111
6 用戶偏好和默認設置 ... 113
偏好類型 ..... 113
地區 ....... 113
行為 ....... 114
外觀 ....... 115
支持地區 ..... 115
決定支持哪些地區 ...... 115
維護地區 ....... 116
設置地區 ..... 116
選擇地區 ....... 117
存儲地區偏好 ..... 117
URI 中的地區 ..... 118
通用組件配置 ..... 118
選擇配置的值 ..... 119
存儲和硬編碼默認值 ...... 119
對后端的影響 ..... 120
加載配置值 ..... 121
配置行為 ..... 122
啟用和禁用組件 ..... 122
改變數量 ....... 123
改變順序 ....... 124
配置通知 ....... 126
行內選項 ....... 126
改變外觀 ..... 127
主題工具 ....... 127
選擇一個主題 ..... 128
單獨的樣式偏好 ..... 128
性能影響 ..... 128
可配置地區的性能 ...... 129
可配置行為的性能 ...... 129
可配置主題的性能 ...... 132
小結 ...... 132
7 加載時間和響應速度 ... 135
組件構件 ..... 135
組件依賴 ....... 135
構建組件 ....... 136
加載組件 ..... 137
加載模塊 ....... 137
懶惰的模塊加載 ..... 138
模塊加載的延遲 ..... 139
通信瓶頸 ..... 141
減少間接引用 ..... 141
分析代碼 ....... 143
組件優化 ..... 145
維護狀態的組件 ..... 145
處理副作用 ..... 146
DOM 渲染技術 ..... 148
API 數據 ..... 150
加載延遲 ....... 150
處理大數據集 ..... 151
優化運行時組件 ..... 152
小結 ...... 153
8 可移植性和測試 .... 155
與后端解耦 ..... 155
模擬后端API ..... 155
前端入口 ....... 156
模擬工具 ....... 157
生成模擬數據集 ..... 158
執行操作 ....... 159
功能設計過程 ..... 159
設計API ....... 160
實現模擬數據 ..... 160
實現功能 ....... 161
協調模擬數據與真實數據 ...... 162
單元測試工具 ..... 163
框架自帶的工具 ..... 163
獨立的單元測試工具 ...... 164
工具鏈和自動化 ..... 165
測試模擬場景 ..... 166
模擬API 和測試固件 ...... 166
場景生成工具 ..... 167
端到端測試和持續集成 ..... 168
小結 ...... 169
9 縮小規模 ..... 171
擴展限制 ..... 171
JavaScript 文件體積 ...... 172
網絡帶寬 ....... 173
內存消耗 ....... 175
CPU 消耗 ...... 177
后端能力 ....... 179
互相矛盾的功能 ..... 180
重疊的功能 ..... 181
冗余的功能 ..... 182
用戶需求 ....... 182
設計失效 ..... 183
多余的組件 ..... 184
低效的數據處理 ..... 186
過度創建標記 ..... 190
應用組合 ..... 191
功能的啟動 ..... 191
新功能的影響 ..... 192
重要的庫 ....... 192
小結 ...... 193
10 處理錯誤 ..... 195
快速失效 ..... 195
使用質量約束 ..... 196
提供有意義的反饋 ...... 196
當無法快速失效時…… ...... 197
容錯 ...... 198
區分關鍵行為 ..... 198
探測和控制錯誤行為 ...... 199
禁用出錯組件 ..... 202
優雅地降級功能 ..... 203
故障恢復 ..... 204
重試失敗操作 ..... 204
重啟組件 ....... 207
用戶手動干涉 ..... 208
當我們無法從故障中恢復…… .... 209
性能和復雜度 ..... 210
異常處理 ....... 210
狀態檢查 ....... 211
通知其他組件 ..... 211
記錄日志和調試 ..... 212
有意義的錯誤日志 ...... 212
為潛在故障發出警告 ...... 213
通知和指導用戶 ..... 214
改進架構 ..... 214
記錄錯誤場景 ..... 215
改進組件分類 ..... 215
復雜導致出錯 ..... 216
小結 ...... 216
序: