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

前端工程化:體系設計與實踐

( 簡體 字)
作者:周俊鵬類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社前端工程化:體系設計與實踐 3dWoo書號: 48203
詢問書籍請說出此書號!

缺書
NT售價: 345

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

譯者序:

前言:

推薦序
技術之外

前端工程體系是一種服務,以項目迭代過程中的前端開發為主要服務對象,涉及開發、構建、部署等環節。
——摘自《前端工程化:體系設計與實踐》

阿里的玉伯曾經問過我一個問題:前端該不該碰業務?具體一點地說,就是前端要不要了解后端的業務邏輯,甚至將部分這樣的邏輯與規則放在前端來處理與實現。我當時思考了片刻,給玉伯的建議是:前端還是不要碰業務邏輯,圍繞著交互做就好了。
事實上這個問題的答案有很多,不同的場景下也可以各有權衡,所以上面的答案也并非標準答案。但我在這里提及這件事情的原因是:這個問題的前設、背景與分析過程,是技術無關的。顯而易見,我們并沒有討論哪一種框架來解決何種技術問題,又或者在技術上如何做前后端分離。我們是在討論一個根本上的工程協作問題:誰,該做什么?這個問題的關鍵點,就是“什么是領域劃分的事實依據”。
前端的工程化,事實上還處在一個原始階段。我們如今之所視,可以一言以蔽之:或在對語言內在功能特性的補充,或在對其外在組織能力的補充。這些種種補充,盡是在工程體系的“工具”這一隅上做的功夫。可以預見的是,在前端工程這個體系上前行,必然面臨的問題是過程的優化和方法論的建立。然而如今前端在這些大的、根本性的問題上并沒有任何觸及,甚至連上面這樣的“領域劃分”問題都沒有被認真地討論過。
這些問題,也都如同開始的那個問題一樣,是在技術之外。
所幸作者是意識到了這一點的。他在本書中將“前端工程體系”定義成一種服務,而非一種工程模型。從作者的定義來看,這個體系是可資實用的一種工具——可討論、可實現,以及可以演化與重構,并遵循這些服務的設計原則、問題場景以及應用的約束。在我看來,這些內容才是書中的閃光點。
除此之外,本書還詳細地討論了其中有關腳手架、構建過程和本地工程化服務等現實中的工程實踐所得,并為這些實踐構畫了一個參考模型。這使得本書提供了大量前端工程師可借鑒、參考并投之于生產實作的最佳實踐。我想,作為結果,這些實踐的優劣得失尚待時間驗證,而作者在這一過程中的分析與觀點,也可待業界指正評點。
而我所愿者,亦在讀者能與我一道,在技術之外多做一點點觀察。

周愛民
2017.11


前言


前端工程師這一崗位最初被獨立分化出來專注于網頁樣式(CSS)的制作,目的是為了令Web開發者將更多的精力投入負責的業務邏輯中。然而隨著Web技術的發展以及PC、移動智能終端設備性能和功能的提升,用戶對于網站的需求也不斷增加。市場的需求促進技術的革新,對于前端工程師的要求早已不僅僅是編寫CSS了。資源的多樣性和邏輯的復雜性一度令前端開發工作異常煩瑣且難以維護,工作效率的降低直接導致Web產品的迭代速度變慢,前端工程化便是在此時代背景下應運而生的。
事實上,前端工程化目前的形態和生態仍然處于非常原始的階段。每個團隊甚至每個人由于存在研究領域(比如業務層和框架層)和業務類型(比如Google Map與淘寶)的差異,從而對前端工程化有不同的需求和定位。本書將前端工程化解讀為一系列規范和流程的集合,它不是一個框架或者工具,聚焦的不是某個垂直的研究領域或者特殊的業務類型,而是一種可演化、可擴展的服務,服務的目標是解決前端開發以及前后端協作開發過程中的難點和痛點問題,涵蓋項目的起始、開發、測試以及部署環節。工具是前端工程化的實現媒介,規范是工程化的指導方針,工作流程是工程化的外在表現形式以及約束規范的載體。
本書通過解析一個Web項目迭代過程中前端開發者面臨的諸多問題,從工程化的角度給出對應的解決方案,最終將各個環節串聯為完整的工作流。希望讀者通過閱讀本書可以對前端工程化要解決的問題有大致的了解,從而能夠對讀者自行實現工程化方案有所幫助。
目標讀者
本書的主要目標讀者是對前端工程化有一定理解和實踐的中高級前端工程師,同樣適用于對前端工程化感興趣的服務器端開發者以及運維人員。本書假設讀者熟悉Web站點的基本工作原理,尤其是前端與服務器端之間的協作流程,并且對HTTP協議、異步通信、模塊化等知識有深入的理解。
本書第1章以前端工程師從無到有直至發展至今的歷程作為后續內容的起始。從歷史中我們提煉出前端開發人員在一個Web項目迭代周期各個階段面臨的諸多問題,這些問題是前端工程化誕生的催化劑,也是指導工程方案設計的本源。之后,我們會按照Web項目從起始到發布的流程分別介紹前端工程化在各個階段的需求和功能設計,比如腳手架在項目初期減少了重復的體力操作并且降低了業務框架學習成本;構建系統從編程語言、優化和部署 3 個角度解決了前端開發語言內在的缺陷以及由宿主客戶端特性引起的開發和生產環境之間的差異性;本地開發服務器提供了前后端并行開發的平臺;部署功能權衡速度、協作和安全,把控著Web產品上線前的最后一道關卡。最后將這些功能模塊合理地串聯為完整的工作流,便是前端工程化的完整外在形態。
前端工程師的定位在不同的年代甚至不同的團隊中存在著巨大的差異,即使僅以目前的時間節點為標準也難以給前端工程師一個絕對明確的定義。崗位職責的變化促進了工程體系的演進,所以本書在最后的章節中闡述了一些對前端工程師未來定位的思考,同時探討了與之對應的前端工程體系的演進形式。
以下是分章節介紹:
? 第1章 前端工程簡史 講述前端工程師的發展史、在團隊中的定位,以及前后端分離和前端工程化的進化歷程與基本形態。
? 第2章 腳手架 講述作為前端項目起始階段取代煩瑣人工操作的腳手架必須具備的要素以及本質,通過剖析目前市面上的經典案例講解實現腳手架過程中需要考慮的要點以及如何集成Yeoman到工程化方案中。
? 第3章 構建 講述構建系統面臨的問題以及對應的解決方案。構建是前端工程體系中功能最多、最復雜的模塊,也是串聯本地開發服務器、部署的關鍵,是實現工作流的核心模塊。
? 第4章 本地開發服務器 講述如何以Mock服務實現前后端并行開發,以及配合動態構建進一步提升前端工程師的開發效率。
? 第5章 部署 講述部署功能如何權衡速度、協作和安全3個重要原則,以及前端靜態資源特殊的部署策略。
? 第6章 工作流 講述如何將既有的功能串聯成完整的工作流。以速度見長的本地工作流和注重嚴謹的云平臺工作流,兩者各有優劣,適用于不同需求和不同規模的團隊。
? 第7章 前端工程化的未來 講述前端工程師如何選擇進階的方向以便適應未來的變化。前端工程化是服務于前端開發的,前端工程師定位的改變必然會引起工程化方案的調整。本章通過分析未來工程化不變和可變的方面,探討前端工程化未來的表現形式。
“前端工程化系列”叢書
本書是“前端工程化系列”叢書之一,著重講述輔助性質的工程體系設計和實踐過程。前端工程化可以簡單地理解為前端架構與工程體系的綜合體,兩者相輔相成。本系列叢書的后續作品將從綜合的角度深層剖析架構與體系之間的關聯及融合,講述如何從宏觀的角度打造合理的前端工程化生態。感興趣的讀者可以關注本系列叢書的相關動態。
感謝我的同事和領導在我創作本書期間給予的建議和支持。特別感謝我曾經的技術領導元亮,在與他共事期間我于前端工程領域的探索和研究得到了充分的空間和資源。
感謝電子工業出版社博文視點的編輯付睿,她在編輯和審校本書期間提出了寶貴的意見。
最后,感謝我的朋友、父母以及妻子劉女士在我創作本書期間給予的空間和支持。
內容簡介:

前端工程化包含一系列規范和流程,其可提升前端工程師的工作效率,加快Web開發迭代速度,是現在前端開發領域中非常重要的一環。本書系統、全面地介紹了前端工程體系的各個環節,包括設計要點和實踐經驗。全書分為7章,分別包括緒論、腳手架、構建、本地開發服務器、部署、工作流、前端工程化的未來。

目錄:

第1章 前端工程簡史 1
1.1 前端工程師的基本素養 2
1.1.1 前端工程師的發展歷史 2
1.1.2 前端工程師的技能棧 3
1.2 Node.js帶給前端的改革 7
1.2.1 前端的兩次新生 7
1.2.2 Node.js帶來的改革 9
1.3 前后端分離 12
1.3.1 原始的前后端開發模式 13
1.3.2 前后端分離的基本模式 14
1.3.3 前后端分離與前端工程化 19
1.4 前端工程化 19
1.4.1 前端工程化的衡量準則 20
1.4.2 前端工程化的進化歷程 21
1.4.3 前端工程化的3個階段 32
1.5 工程化方案架構 34
1.5.1 webpack 34
1.5.2 工程化方案的整體架構 36
1.5.3 功能規劃 37
1.5.4 設計原則 41
1.6 總結 42
第2章 腳手架 43
2.1 腳手架的功能和本質 44
2.2 腳手架在前端工程中的角色和特征 45
2.2.1 用完即棄的發起者角色 45
2.2.2 局限于本地的執行環境 47
2.2.3 多樣性的實現模式 49
2.3 開源腳手架案例剖析 51
2.4 集成Yeoman封裝腳手架方案 56
2.4.1 封裝腳手架方案 57
2.4.2 集成到工程化體系中 63
2.5 總結 66
第3章 構建 68
3.1 構建功能解決的問題 68
3.2 配置API設計原則和編程范式約束 71
3.2.1 配置API設計 71
3.2.2 編程范式約束 75
3.3 ECMAScript與Babel 76
3.3.1 ECMAScript發展史 76
3.3.2 ES6的跨時代意義 78
3.3.3 Babel——真正意義的JavaScript編譯 80
3.3.4 結合webpack與Babel實現JavaScript構建 84
3.4 CSS預編譯與PostCSS 89
3.4.1 CSS的缺陷 90
3.4.2 CSS預編譯器 90
3.4.3 PostCSS 91
3.4.4 webpack結合預編譯與PostCSS實現CSS構建 93
3.4.5 案例:自動生成CSS Sprites功能實現 95
3.5 模塊化開發 101
3.5.1 模塊化與組件化 101
3.5.2 模塊化與工程化 102
3.5.3 模塊化開發的價值 103
3.5.4 前端模塊化發展史 107
3.5.5 webpack模塊化構建 109
3.6 增量更新與緩存 112
3.6.1 HTTP緩存策略 113
3.6.2 覆蓋更新與增量更新 117
3.6.3 按需加載與多模塊架構場景下的增量更新 120
3.6.4 webpack實現增量更新構建方案 122
3.7 資源定位 128
3.7.1 資源定位的歷史變遷 128
3.7.2 常規的資源定位思維 132
3.7.3 webpack的逆向注入模式 132
3.8 總結 147
第4章 本地開發服務器 149
4.1 本地開發服務器解決的問題 150
4.2 動態構建 152
4.2.1 webpack-dev-middleware 152
4.2.2 Livereload和HMR 157
4.3 Mock服務 161
4.3.1 Mock的必要前提和發展進程 162
4.3.2 異步數據接口 166
4.3.3 SSR 172
4.4 總結 174
第5章 部署 175
5.1 部署流程的設計原則 175
5.1.1 速度——化繁為簡 177
5.1.2 協作——代碼審查和部署隊列 181
5.1.3 安全——嚴格審查和權限控制 184
5.2 流程之外:前端靜態資源的部署策略 186
5.2.1 協商緩存與強制緩存 186
5.2.2 Apache設置緩存策略 186
5.3 總結 190
第6章 工作流 191
6.1 本地工作流 192
6.1.1 二次構建的隱患 193
6.1.2 代碼分離與測試沙箱 194
6.2 云平臺工作流 197
6.2.1 GitFlow與版本管理 199
6.2.2 WebHook與自動構建 201
6.3 持續集成與持續交付 203
6.4 總結 205
第7章 前端工程化的未來 206
7.1 前端工程師未來的定位 206
7.1.1 不只是瀏覽器 207
7.1.2 也不只是Web 208
7.2 前端工程化是一張藍圖 209
7.3 總結 212
序: