大型 JavaScript 應用最佳實踐指南 大型JavaScript应用最佳实践指南

亞當·博達哈 (Adam Boduch)

  • 出版商: 電子工業
  • 出版日期: 2017-01-01
  • 定價: $390
  • 售價: 7.2$281
  • 語言: 簡體中文
  • 頁數: 236
  • 裝訂: 平裝
  • ISBN: 7121307065
  • ISBN-13: 9787121307065
  • 相關分類: JavaScript
  • 此書翻譯自: JavaScript at Scale
  • 立即出貨 (庫存 < 3)

買這商品的人也買了...

商品描述

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

作者簡介

Adam Boduch在開發大型JavaScript應用方面有近10年的工作經驗。在轉型為前端工程師之前,他曾使用Python與Linux參與了許多大型雲計算產品的構建。

Adam擁有非常豐富的開發經驗,擅長處理複雜的場景,提高軟件的可擴展性。他編寫了很多JavaScript方面的書籍,其中包括Lo-Dash Essentials,並且,他還熱衷於優化用戶體驗和性能。

Adam現居住於多倫多,是Virtustream的一名高級軟件工程師。

關於審校者
August N. Marcello III是一位充滿激情的軟件工程師,在客戶端的Web應用架構相關的設計、實現、部署方面,有著近20年的工作經驗。

他專注於基於SaaS創造良好的用戶體驗,並將其傳播到Web生態系統,這無論從個人還是從專業角度來說都極具價值。

對新興通用技術的熱愛以及對先進的JavaScript平台的專注,驅動著他在技術上精益求精。在工作之餘,他會參加越野跑、山地自行車騎行,或者陪伴家人和朋友。

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公司的全棧開發者。

業餘時間,他喜歡寫博客。

Nikolay Sokolov是一名軟件工程師,他在雲計算、自動化部署和企業軟件開發方面有著豐富的經驗。現在就職於Tonomi,負責基於彈性組件模型分發雲應用的自動管理包。

Serkan Yersen是一名洛杉磯的軟件開發者。他是一些開源庫的作者,例如: ifvisible.js、underscore.py以及kwargs.js。Serkan專門從事構建大型JavaScript應用,以及為用戶廣泛的應用創建UI。

2006年至2012年,就職於網站期間,他開發了一個複雜的表單生成器,供上百萬用戶使用。現在,他就職於Home Depot和Redbeacon,負責Web應用開發。

關於譯者
本書翻譯工作由月影領銜的奇舞團翻譯小組承擔,由王韋華、黃小璐、黃薇負責翻譯。王韋華網名Aztack,前端技術專家。曾就職百度、奇虎360等國內知名互聯網公司。

擁有豐富的Web前端開發經驗,擅長JavaScript、Ruby、Java、C++等語言。

黃小璐
畢業於華中科技大學計算機學院。現為奇虎360軟件開發工程師。曾參與開源項目[stcjs](高性能前端工作流系統)。參與翻譯了《高性能HTML5》等書。

黃薇
畢業於中山大學,於2013年加入奇舞團,近期參與了Nova.js(Web Component框架)、聲享(在線製作PPT)等項目,對大型JavaScript應用有濃厚的興趣和豐富的開發經驗。

以上三位譯者曾共同參與《移動Web手冊》一書的翻譯工作。

目錄大綱

1 擴展應用
  影響擴展的因素
  對可擴展的需要
  不斷增長的用戶
  添加新功能
  僱傭更多的開發者
  架構角度
  瀏覽器是一個獨特的環境
  組件設計
  組件通信
  加載時間
  響應性
  可尋址性
  可配置性
  架構性取捨
  確定不可變內容
  從開發的便捷性考慮性能
  性能的可配置性
  從可替換性考慮性能
  可尋址性的開發便捷性
  性能的可維護性
  減少功能以提高可維護性
  利用框架
  框架與類庫
  一致地實現模式
  內建的性能
  利用社區智慧
  框架並非天生支持擴展
  小結

2 可擴展性的影響因素
  擴展用戶
  許可證費用
  訂閱費用
  消耗費用
  廣告支持
  開源
  與用戶溝通
  支持機制
  反饋機制
  提示用戶
  用戶維度
  擴展用戶示例
  擴展功能
  應用價值
  “殺手級”功能與“殺死”應用的功能
  數據驅動的功能
  與競品比較
  修改已有的功能
  支持用戶分組和角色
  增加新服務
  擴展功能示例
  開發的可擴展性
  尋找開發資源
  開發職責
  資源過多
  擴展開發示例
  影響因素檢查表
  用戶檢查清單
  功能清單
  開發者清單
  小結

3 組件組合
  通用組件
  模塊
  路由器
  模型/集合
  控制器/視圖
  模板
  應用特定的組件
  擴展通用組件
  識別公用數據、功能
  擴展路由器組件
  擴展模型/集合
  擴展控制器/視圖
  將功能映射到組件
  通用功能
  特定功能
  解構組件
  維護和調試組件
  重構複雜組件
  可插拔的業務邏輯
  擴展與配置
  無狀態的業務邏輯
  組織組件代碼
  小結

4 組件的通信與職責
  通信模型
  消息傳遞模型
  事件模型
  通信數據結構
  命名約定
  數據格式
  公共數據
  可追踪的組件通信
  訂閱事件
  全局事件日誌
  事件的生命週期
  通信的開銷
  事件的頻率
  回調函數執行時間
  事件複雜度
  通信責任區
  後端API
  Web Socket 用於更新狀態
  DOM 更新
  松耦合的通信
  替換組件
  應對意外事件
  組件分層
  事件流向
  開發者的職責
  構建代碼思維導圖
  小結

5 尋址和導航
  實現路由的方法
  Hash URI
  傳統URI
  路由是如何工作的
  路由的職責
  路由事件
  URI 的結構和模式
  編碼信息
  設計URI
  將資源映射到URI
  手動創建URI
  自動生成資源
  觸發路由
  用戶行為
  重定向用戶
  路由配置
  靜態路由聲明
  註冊事件
  禁用路由
  故障排查
  路由器衝突
  記錄初始配置
  記錄路由事件
  處理非法資源的狀態
  小結


6 用戶偏好和默認設置
  偏好類型
  地區
  行為
  外觀
  支持地區
  決定支持哪些地區
  維護地區
  設置地區
  選擇地區
  存儲地區偏好
  URI中的地區
  通用組件配置
  選擇配置的值
  存儲和硬編碼默認值
  對後端的影響
  加載配置值
  配置行為
  啟用和禁用組件
  改變數量
  改變順序
  配置通知
  行內選項
  改變外觀
  主題工具
  選擇一個主題
  單獨的樣式偏好
  性能影響
  可配置地區的性能
  可配置行為的性能
  可配置主題的性能
  小結


7 加載時間和響應速度
  組件構件
  組件依賴
  構建組件
  加載組件
  加載模塊
  懶惰的模塊加載
  模塊加載的延遲
  通信瓶頸
  減少間接引用
  分析代碼
  組件優化
  維護狀態的組件
  處理副作用
  DOM渲染技術
  API數據
  加載延遲
  處理大數據集
  優化運行時組件
  小結

8 可移植性和測試
  與後端解耦
  模擬後端API
  前端入口
  模擬工具
  生成模擬數據集
  執行操作
  功能設計過程
  設計API
  實現模擬數據
  實現功能
  協調模擬數據與真實數據
  單元測試工具
  框架自帶的工具
  獨立的單元測試工具
  工具鍊和自動化
  測試模擬場景
  模擬API和測試固件
  場景生成工具
  端到端測試和持續集成
  小結


9 縮小規模
  擴展限制
  文件體積
  網絡帶寬
  內存消耗
  CPU 消耗
  後端能力
  互相矛盾的功能
  重疊的功能
  冗餘的功能
  用戶需求
  設計失效
  多餘的組件
  低效的數據處理
  過度創建標記
  應用組合
  功能的啟動
  新功能的影響
  重要的庫
  小結


10 處理錯誤
  快速失效
  使用質量約束
  提供有意義的反饋
  當無法快速失效時
  容錯
  區分關鍵行為
  探測和控制錯誤行為
  禁用出錯組件
  優雅地降級功能
  故障恢復
  重試失敗操作
  重啟組件
  用戶手動干涉
  當我們無法從故障中恢復
  性能和復雜度
  異常處理
  狀態檢查
  通知其他組件
  記錄日誌和調試
  有意義的錯誤日誌
  為潛在故障發出警告
  通知和指導用戶
  改進架構
  記錄錯誤場景
  改進組件分類
  複雜導致出錯
小結