關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
前端架構(gòu)師:基礎(chǔ)建設(shè)與架構(gòu)設(shè)計(jì)思想 讀者對(duì)象:想要加深前端基礎(chǔ)建設(shè)能力的開(kāi)發(fā)者;想要培養(yǎng)前端架構(gòu)思維的開(kāi)發(fā)者及從業(yè)者。
快速發(fā)展的紅利、優(yōu)勝劣汰的挑戰(zhàn)、與生俱來(lái)的混亂、同混亂抗衡的規(guī)范……這些都是前端從業(yè)者無(wú)法逃避的現(xiàn)狀。有人說(shuō),做好業(yè)務(wù)支撐是活在當(dāng)下,而做好技術(shù)基建是活好未來(lái)。當(dāng)業(yè)務(wù)量到達(dá)一定量級(jí)時(shí),成為“規(guī)范制定者”,成為“思考者”,像“架構(gòu)師”一樣思考問(wèn)題,才能最終成為“優(yōu)勝者”。本書(shū)內(nèi)容不是簡(jiǎn)單的思維模式輸出,不是純粹“陽(yáng)春白雪”的理論,也不是社區(qū)搜索即得的 Webpack配置羅列和原理復(fù)述,而是從項(xiàng)目痛點(diǎn)中提取出的基礎(chǔ)建設(shè)的意義,以及從個(gè)人發(fā)展瓶頸中總結(jié)出的工程化架構(gòu)和底層設(shè)計(jì)原理。本書(shū)不僅能幫助開(kāi)發(fā)者夯實(shí)基礎(chǔ),還能為開(kāi)發(fā)者實(shí)現(xiàn)技術(shù)進(jìn)階提供幫助和啟發(fā)。
侯策,就職于某內(nèi)容社區(qū)類互聯(lián)網(wǎng)上市公司,具有多年海內(nèi)外工作經(jīng)驗(yàn),曾先后就職于法國(guó)ENGIE集團(tuán)、Google、百度等知名企業(yè)。擅長(zhǎng)前端工程化體系搭建及基礎(chǔ)建設(shè)架構(gòu)設(shè)計(jì)。深入了解前端各類技術(shù)框架和相關(guān)技術(shù)棧,具有豐富的高流量產(chǎn)品穩(wěn)定性建設(shè)及性能和用戶體驗(yàn)優(yōu)化經(jīng)驗(yàn),在業(yè)務(wù)提效和質(zhì)量保障方面亦有深厚積累,在跨端開(kāi)發(fā)(包括小程序矩陣開(kāi)發(fā))、富文本編輯器、Node.js、React等技術(shù)方向有較強(qiáng)的業(yè)內(nèi)影響力。在技術(shù)氛圍打造、團(tuán)隊(duì)成員培養(yǎng)、技術(shù)體系建設(shè)、新技術(shù)落地、難點(diǎn)攻堅(jiān)、歷史包袱重構(gòu)等方面均有豐富的實(shí)踐經(jīng)歷。著有《React狀態(tài)管理與同構(gòu)實(shí)踐》《前端開(kāi)發(fā)核心知識(shí)進(jìn)階:從夯實(shí)基礎(chǔ)到突破瓶頸》等多部技術(shù)圖書(shū)。可通過(guò)知乎社區(qū)聯(lián)系作者:Lucas HC
目 錄
第一部分 前端工程化管理工具 01 安裝機(jī)制及企業(yè)級(jí)部署私服原理 ................................................................ 2 npm 內(nèi)部機(jī)制與核心原理 ...................................................................................................... 2 npm 不完全指南 ...................................................................................................................... 6 npm 多源鏡像和企業(yè)級(jí)部署私服原理 .................................................................................. 9 總結(jié) ........................................................................................................................................ 11 02 Yarn 安裝理念及依賴管理困境破解 .......................................................... 12 Yarn 的安裝機(jī)制和背后思想 ................................................................................................ 14 破解依賴管理困境 ................................................................................................................ 17 總結(jié) ........................................................................................................................................ 21 03 CI 環(huán)境下的 npm 優(yōu)化及工程化問(wèn)題解析 ................................................. 22 CI 環(huán)境下的 npm 優(yōu)化 .......................................................................................................... 22 更多工程化相關(guān)問(wèn)題解析 .................................................................................................... 23 最佳實(shí)操建議 ........................................................................................................................ 30 總結(jié) ........................................................................................................................................ 31 04 主流構(gòu)建工具的設(shè)計(jì)考量 ......................................................................... 32 從 Tooling.Report 中,我們能學(xué)到什么 .............................................................................. 32 總結(jié) ........................................................................................................................................ 36 05 Vite 實(shí)現(xiàn):源碼分析與工程構(gòu)建 ............................................................... 37 Vite 的“橫空出世”............................................................................................................. 37 Vite 實(shí)現(xiàn)原理解讀 ................................................................................................................ 38 總結(jié) ........................................................................................................................................ 50 第二部分 現(xiàn)代化前端開(kāi)發(fā)和架構(gòu)生態(tài) 06 談?wù)?core-js 及 polyfill 理念 ...................................................................... 52 core-js 工程一覽 .................................................................................................................... 52 如何復(fù)用一個(gè) polyfill ........................................................................................................... 54 尋找最佳的 polyfill 方案 ...................................................................................................... 59 總結(jié) ........................................................................................................................................ 62 07 梳理混亂的 Babel,拒絕編譯報(bào)錯(cuò) ............................................................ 63 Babel 是什么 .......................................................................................................................... 63 Babel Monorepo 架構(gòu)包解析 ................................................................................................ 64 Babel 工程生態(tài)架構(gòu)設(shè)計(jì)和分層理念 .................................................................................. 75 總結(jié) ........................................................................................................................................ 78 08 前端工具鏈:統(tǒng)一標(biāo)準(zhǔn)化的 babel-preset ................................................. 79 從公共庫(kù)處理的問(wèn)題,談如何做好“掃雷人” ................................................................. 79 應(yīng)用項(xiàng)目構(gòu)建和公共庫(kù)構(gòu)建的差異 .................................................................................... 81 一個(gè)企業(yè)級(jí)公共庫(kù)的設(shè)計(jì)原則 ............................................................................................ 81 制定一個(gè)統(tǒng)一標(biāo)準(zhǔn)化的 babel-preset .................................................................................... 82 總結(jié) ........................................................................................................................................ 91 09 從 0 到 1 構(gòu)建一個(gè)符合標(biāo)準(zhǔn)的公共庫(kù) ....................................................... 92 實(shí)戰(zhàn)打造一個(gè)公共庫(kù) ............................................................................................................ 92 打造公共庫(kù),支持 script 標(biāo)簽引入代碼 .............................................................................. 96 打造公共庫(kù),支持 Node.js 環(huán)境 ........................................................................................ 100 從開(kāi)源庫(kù)總結(jié)生態(tài)設(shè)計(jì) ...................................................................................................... 103 總結(jié) ...................................................................................................................................... 104 10 代碼拆分與按需加載 .............................................................................. 105 代碼拆分與按需加載的應(yīng)用場(chǎng)景 ...................................................................................... 105 代碼拆分與按需加載技術(shù)的實(shí)現(xiàn) ...................................................................................... 106 Webpack 賦能代碼拆分和按需加載 ................................................................................... 113 總結(jié) ...................................................................................................................................... 119 11 Tree Shaking:移除 JavaScript 上下文中的未引用代碼 ......................... 120 Tree Shaking 必會(huì)理論 ........................................................................................................ 120 前端工程化生態(tài)和 Tree Shaking 實(shí)踐 ............................................................................... 124 總結(jié) ...................................................................................................................................... 131 12 理解 AST 實(shí)現(xiàn)和編譯原理 ...................................................................... 132 AST 基礎(chǔ)知識(shí) ..................................................................................................................... 132 AST 實(shí)戰(zhàn):實(shí)現(xiàn)一個(gè)簡(jiǎn)易 Tree Shaking 腳本 ................................................................... 136 總結(jié) ...................................................................................................................................... 141 13 工程化思維:應(yīng)用主題切換 .................................................................... 142 設(shè)計(jì)一個(gè)主題切換工程架構(gòu) .............................................................................................. 142 主題色切換架構(gòu)實(shí)現(xiàn) .......................................................................................................... 145 總結(jié) ...................................................................................................................................... 150 14 解析 Webpack 源碼,實(shí)現(xiàn)工具構(gòu)建 ....................................................... 151 Webpack 的初心和奧秘 ...................................................................................................... 151 手動(dòng)實(shí)現(xiàn)打包器 .................................................................................................................. 156 總結(jié) ...................................................................................................................................... 160 15 跨端解析小程序多端方案 ....................................................................... 161 小程序多端方案概覽 .......................................................................................................... 161 小程序多端——編譯時(shí)方案 ............................................................................................... 162 小程序多端——運(yùn)行時(shí)方案 ............................................................................................... 164 小程序多端——類 React 風(fēng)格的編譯時(shí)和運(yùn)行時(shí)結(jié)合方案 ............................................ 166 小程序多端方案的優(yōu)化 ...................................................................................................... 176 總結(jié) ...................................................................................................................................... 178 16 從移動(dòng)端跨平臺(tái)到 Flutter 的技術(shù)變革 .................................................... 179 移動(dòng)端跨平臺(tái)技術(shù)原理和變遷 .......................................................................................... 179 Flutter 新貴背后的技術(shù)變革 ............................................................................................... 188 總結(jié) ...................................................................................................................................... 194 第三部分 核心框架原理與代碼設(shè)計(jì)模式 17 axios:封裝一個(gè)結(jié)構(gòu)清晰的 Fetch 庫(kù) .................................................... 196 設(shè)計(jì)請(qǐng)求庫(kù)需要考慮哪些問(wèn)題 .......................................................................................... 196 axios 設(shè)計(jì)之美 ..................................................................................................................... 199 總結(jié) ...................................................................................................................................... 206 18 對(duì)比 Koa 和 Redux:解析前端中間件 .................................................... 207 以 Koa 為代表的 Node.js 中間件設(shè)計(jì) ............................................................................... 207 對(duì)比 Express,再談 Koa 中間件 ........................................................................................ 210 Redux 中間件設(shè)計(jì)和實(shí)現(xiàn) ................................................................................................... 213 利用中間件思想,實(shí)現(xiàn)一個(gè)中間件化的 Fetch 庫(kù) ............................................................ 215 總結(jié) ...................................................................................................................................... 218 19 軟件開(kāi)發(fā)靈活性和高定制性 .................................................................... 219 設(shè)計(jì)模式 .............................................................................................................................. 219 函數(shù)式思想應(yīng)用 .................................................................................................................. 223 總結(jié) ...................................................................................................................................... 227 20 理解前端中的面向?qū)ο笏枷?.................................................................... 228 實(shí)現(xiàn) new 沒(méi)有那么容易 ...................................................................................................... 228 如何優(yōu)雅地實(shí)現(xiàn)繼承 .......................................................................................................... 230 jQuery 中的面向?qū)ο笏枷?.................................................................................................. 234 類繼承和原型繼承的區(qū)別 .................................................................................................. 236 總結(jié) ...................................................................................................................................... 237 21 利用 JavaScript 實(shí)現(xiàn)經(jīng)典數(shù)據(jù)結(jié)構(gòu) ........................................................ 238 數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)介 ...................................................................................................................... 238 堆棧和隊(duì)列 .......................................................................................................................... 239 鏈表(單向鏈表和雙向鏈表) .......................................................................................... 241 樹(shù) .......................................................................................................................................... 247 圖 .......................................................................................................................................... 251 總結(jié) ...................................................................................................................................... 255 22 剖析前端數(shù)據(jù)結(jié)構(gòu)的應(yīng)用場(chǎng)景 ................................................................ 256 堆棧和隊(duì)列的應(yīng)用 .............................................................................................................. 256 鏈表的應(yīng)用 .......................................................................................................................... 257 樹(shù)的應(yīng)用 .............................................................................................................................. 260 總結(jié) ...................................................................................................................................... 263 第四部分 前端架構(gòu)設(shè)計(jì)實(shí)戰(zhàn) 23 npm scripts:打造一體化構(gòu)建和部署流程 .............................................. 266 npm scripts 是什么 ............................................................................................................... 266 npm scripts 原理 ................................................................................................................... 267 npm scripts 使用技巧 ........................................................................................................... 269 打造一個(gè) lucas-scripts ......................................................................................................... 270 總結(jié) ...................................................................................................................................... 276 24 自動(dòng)化代碼檢查:剖析 Lint 工具 ............................................................ 277 自動(dòng)化工具 .......................................................................................................................... 277 lucas-scripts 中的 Lint 配置最佳實(shí)踐 ................................................................................. 281 工具背后的技術(shù)原理和設(shè)計(jì) .............................................................................................. 283 總結(jié) ...................................................................................................................................... 285 25 前端+移動(dòng)端離線包方案設(shè)計(jì) .................................................................. 286 從流程圖分析 hybrid 性能痛點(diǎn) .......................................................................................... 286 相應(yīng)優(yōu)化策略 ...................................................................................................................... 287 離線包方案 .......................................................................................................................... 289 方案持續(xù)優(yōu)化 ...................................................................................................................... 293 總結(jié) ...................................................................................................................................... 294 26 設(shè)計(jì)一個(gè)“萬(wàn)能”的項(xiàng)目腳手架 ............................................................ 295 命令行工具的原理和實(shí)現(xiàn) .................................................................................................. 295 從命令行到萬(wàn)能腳手架 ...................................................................................................... 304 總結(jié) ...................................................................................................................................... 306 第五部分 前端全鏈路——Node.js 全棧開(kāi)發(fā) 27 同構(gòu)渲染架構(gòu):實(shí)現(xiàn) SSR 應(yīng)用 .............................................................. 308 實(shí)現(xiàn)一個(gè)簡(jiǎn)易的 SSR 應(yīng)用 ................................................................................................. 308 SSR 應(yīng)用中容易忽略的細(xì)節(jié) .............................................................................................. 312 總結(jié) ...................................................................................................................................... 317 28 性能守衛(wèi)系統(tǒng)設(shè)計(jì):完善 CI/CD 流程 ..................................................... 318 性能守衛(wèi)理論基礎(chǔ) .............................................................................................................. 318 Lighthouse 原理介紹 ........................................................................................................... 319 性能守衛(wèi)系統(tǒng) Perf-patronus ............................................................................................... 322 總結(jié) ...................................................................................................................................... 328 29 打造網(wǎng)關(guān):改造企業(yè) BFF 方案 ............................................................... 329 BFF 網(wǎng)關(guān)介紹和優(yōu)缺點(diǎn)梳理 .............................................................................................. 329 打造 BFF 網(wǎng)關(guān)需要考慮的問(wèn)題 ......................................................................................... 330 實(shí)現(xiàn)一個(gè) lucas-gateway ...................................................................................................... 333 總結(jié) ...................................................................................................................................... 340 30 實(shí)現(xiàn)高可用:Puppeteer 實(shí)戰(zhàn) ................................................................. 341 Puppeteer 簡(jiǎn)介和原理 ......................................................................................................... 341 Puppeteer 在 SSR 中的應(yīng)用 ................................................................................................ 342 Puppeteer 在 UI 測(cè)試中的應(yīng)用 ........................................................................................... 345 Puppeteer 結(jié)合 Lighthouse 的應(yīng)用場(chǎng)景 ............................................................................. 345 通過(guò) Puppeteer 實(shí)現(xiàn)海報(bào) Node.js 服務(wù) .............................................................................. 347 總結(jié) ...............................................................................................................................353
你還可能感興趣
我要評(píng)論
|