這不是一本單純講解前端編程技巧的書,而是一本注重思想提升和內(nèi)功修煉的書。
全書以問題為導(dǎo)向,精選了前端開發(fā)中的34個疑難問題,從分析問題的原因入手,逐步給出解決方案,并分析各種方案的優(yōu)劣,*后針對每個問題總結(jié)出高效編程的*實踐和各種性能優(yōu)化的方法。
全書共7章,內(nèi)容從邏輯上大致可以分為兩大類:
*類,偏向?qū)嵺`,圍繞HTML、CSS、JavaScript等傳統(tǒng)前端技術(shù),以及PWA等新興前端技術(shù),講解如何進行HTML優(yōu)化、CSS優(yōu)化、JavaScript優(yōu)化、頁面優(yōu)化等,以此幫助前端工程師們提升高效編程和應(yīng)用優(yōu)化的能力。
第二類,注重基礎(chǔ),講解了前端工程師必須掌握的數(shù)據(jù)處理、網(wǎng)絡(luò)協(xié)議、文件操作、測試等基礎(chǔ)性的開發(fā)技,目的是幫助前端工程師們修煉內(nèi)功,打下扎實的基礎(chǔ)。
希望通過本書,不僅能幫助前端工程師們夯實基礎(chǔ),而且還能寫出簡潔、優(yōu)美的代碼,為應(yīng)用帶來良好的用戶體驗。
(1)知乎著名前端專欄作者/前端類話題優(yōu)秀答主/人人網(wǎng)資深前端工程師經(jīng)驗總結(jié)
(2)《ES6 標準入門》作者/著名技術(shù)博客作者阮一峰、W3cplus.com
站長大漠大力推薦
(3)從技能修煉和思想提升2個維度總結(jié)出34個高效編程和應(yīng)用優(yōu)化的完美實踐
Preface?前 言為何寫作本書?本書通過介紹前端的優(yōu)化實踐以達到高效編程之功效,這里并不是教你怎么用CSS的某個屬性,如display:grid,或者怎么用JS的ES6,而是重點教你一些前端的思想,如怎么提高用戶體驗,怎么寫出簡潔優(yōu)美的代碼等。注重思想而不注重形式,注重功底而不注重框架是本書的特色。本書有一大部分篇幅在介紹怎么提升編程的功底,怎么修煉內(nèi)功,從而達到高效編程的目的。
全書以問題為導(dǎo)向,例如有些頁面為什么打開會比較卡頓,從怎么解決這種問題,有哪些方法,這些方法的優(yōu)缺點是什么,一步步由淺入深地分析和解決問題。學(xué)會解決問題,比學(xué)會知識更為重要。
本書主要內(nèi)容本書分為七章,第1~4章和第7章的實踐性比較強,第5章和第6章注重基礎(chǔ)。
第1章介紹如何使用瀏覽器提供的便利進行開發(fā),能使用HTML/CSS解決的問題就不要使用JS,因為用HTML/CSS解決一般會更加簡單,用戶體驗也會更好。
第2章介紹怎么樣寫出簡潔高效的JS代碼,怎么組織代碼邏輯,讓代碼更加優(yōu)美,具有更好的擴展性。
第3章介紹頁面整體的優(yōu)化,包括怎么加快頁面的打開速度,怎么避免頁面的卡頓,怎么從一些細節(jié)之處提升用戶的體驗,怎么更好地使用調(diào)試工具。
第4章結(jié)合實際經(jīng)驗,介紹HTML5的一些實用技術(shù),如使用history改善AJAX體驗、圖標字體和SVG、裁剪壓縮圖片、如何做一個PWA應(yīng)用等。
第5章回歸技術(shù)基礎(chǔ),以WebSocket、wasm、Web Workers等HTML5的新技術(shù)為出發(fā)點回歸到計算機基礎(chǔ),如網(wǎng)絡(luò)協(xié)議、程序編譯、多線程等。特別介紹了它們和前端的聯(lián)系,只有掌握這些基礎(chǔ),才能更好地解決問題,做一個優(yōu)秀的前端開發(fā)人員。
第6章討論了諸如跨域、上傳文件、CSS布局等前端技術(shù)支柱,特別是有些很常用但卻是前端知識盲點的部分。
第7章介紹前端的單元測試與自動化測試,以及怎么使用可視化工具制作網(wǎng)頁動畫,還介紹了其他一些前端開發(fā)常用的工具,作為本書的一個補充內(nèi)容。
在寫作的過程中,我都是結(jié)合實際的經(jīng)驗進行闡述,并不像很多大學(xué)課本那樣只講理論。所以相對來說,本書看起來應(yīng)該會比較生動,并且很多章節(jié)都是圖文并茂的。
本書讀者對象本書適用于以下讀者對象:
具有一定的前端基礎(chǔ),想要找一本高階的、能提升水平的書;剛畢業(yè),沒有什么實踐經(jīng)驗,需要一本有實踐指導(dǎo)作用的書;已經(jīng)工作了,想要學(xué)習(xí)一下其他人的前端開發(fā)經(jīng)驗;不是做前端開發(fā),但是有編程基礎(chǔ),想要深入理解前端是怎么運作的,或者是想加深理解HTTP之類的計算機基礎(chǔ)知識。
如何閱讀本書如果你一點編程經(jīng)驗都沒有,可能不太適合閱讀本書,你要是不知道什么是變量,什么是HTML,應(yīng)該先讀一些編程入門書籍。
讀者可以從頭看到結(jié)尾,我相信每一篇看完都會有收獲的;蛘哂嗅槍π缘乜,例如,你覺得自己在計算機基礎(chǔ)里的網(wǎng)絡(luò)協(xié)議、數(shù)據(jù)結(jié)構(gòu)算法等方面比較薄弱,可以直接看第5章;如果你對HTML5比較感興趣可以直接看第4章。在閱讀的過程中,建議讀者都實際操作一遍,而不僅僅是當作睡前讀物,因為只有自己動手實踐才能識別書中的真?zhèn)尾⑶壹由罾斫狻K员緯惶峁┫嚓P(guān)源碼等資源,讀者可自行根據(jù)書中描述動手練習(xí)。
致謝在本書的寫作和出版過程中得到了很多人的幫助,感謝我的家人對我寫作的支持和鼓勵,感謝人人網(wǎng)同事在寫作過程中提出的建議和對錯誤的修正,感謝機械工業(yè)出版社華章分社對本書出版付出的努力,特別是楊福川編輯對本書的策劃以及李雷鳴老師的認真審閱、還要感謝阮一峰、大漠老師在百忙之中審閱本書、認可本書,并為本書寫推薦語。
由于水平有限,書里難免會有一些不足和錯誤的地方,雖經(jīng)過幾番修改,可能還會有些許問題,歡迎讀者朋友對本書的內(nèi)容積極討論,提出意見。我的郵箱是liyincheng@m.scnu.edu.cn。
李銀城 2017年12月17日
李銀城(網(wǎng)名:會編程的銀豬)
資深前端工程師,現(xiàn)就職于人人網(wǎng)。
知乎著名的專欄作者,前端類話題知名答主,在知乎前端圈有一定的影響力。樂于分享。喜歡寫博客,他的知乎專欄Effective前端,累計已經(jīng)超過20萬字,文章被大量轉(zhuǎn)發(fā)和轉(zhuǎn)載。
目 錄?Contents
前 言
第1章 HTML/CSS優(yōu)化 1
Effective前端1:能用HTML/CSS
解決的問題就不要用JS 2
Effective前端2:優(yōu)化HTML標簽 16
Effective前端3:用CSS畫一個三角形 22
Effective前端4:盡可能地使用偽元素 28
第2章 JS優(yōu)化 34
Effective前端5:減少前端代碼耦合 34
Effective前端6:JS書寫優(yōu)化 47
第3章 頁面優(yōu)化 59
Effective前端7:避免頁面卡頓 59
Effective前端8:加快頁面打開速度 67
Effective前端9:增強用戶體驗 85
Effective前端10:用好Chrome Devtools 91
第4章 HTML5優(yōu)化實踐 109
Effective前端11:使用H5的history改善AJAX列表請求體驗 109
Effective前端12:使用圖標替代雪碧圖 118
Effective前端13:理解和使用CSS3動畫 128
Effective前端14:實現(xiàn)前端裁剪壓縮圖片 136
Effective前端15:實現(xiàn)跨瀏覽器的HTML5表單驗證 145
Effective前端16:使用Service Worker做一個PWA離線網(wǎng)頁應(yīng)用 151
第5章 前端與計算機基礎(chǔ) 164
Effective前端17:理解WebSocket和TCP/IP 164
Effective前端18:理解HTTPS連接的前幾毫秒發(fā)生了什么 185
Effective前端19:弄懂為什么0.1 0.2不等于0.3 203
Effective前端20:明白WebAssembly與程序編譯 209
Effective前端21:理解JS與多線程 221
Effective前端22:學(xué)會JS與面向?qū)ο? 231
Effective前端23:了解SQL 248
Effective前端24:學(xué)習(xí)常用的前端算法與數(shù)據(jù)結(jié)構(gòu) 266
第6章 掌握前端基礎(chǔ) 291
Effective前端25:掌握同源策略和跨域 291
Effective前端26:掌握前端本地文件操作與上傳 299
Effective前端27:學(xué)會常用的CSS居中方式 310
Effective前端28:學(xué)會常用的CSS布局技術(shù) 320
Effective前端29:理解字號與行高 327
Effective前端30:使用響應(yīng)式開發(fā) 336
Effective前端31:明白移動端click及自定義事件 344
Effective前端32:學(xué)習(xí)JS高級技巧 355
第7章 運用恰當?shù)墓ぞ? 372
Effective前端33:前端的單元測試與自動化測試 372
Effective前端34:使用AE bodymovin制作網(wǎng)頁動畫 390