轉載!自己用的 2020-10-10

前言

最近常有朋友加我微信芬探,而他們問的最多的問題就是 ——前端技術現(xiàn)在如此繁雜神得,我到底應該如何學習。這個話題太大了偷仿,幾句話回答不好哩簿;也由于這個問題確實困擾了很多前端開發(fā)人員,所以我也就著手系統(tǒng)的輸出這篇文章酝静。

雖然這篇文章花了很長時間节榜,肯定也有其局限性;希望各位不吝指出别智。

入題

我們儼然能感受到前端崗位現(xiàn)在已經(jīng)發(fā)展成了最重要的研發(fā)崗位之一宗苍,所以對我們提出的要求也就越來越高。所以我們需要學的也就不僅僅只是CSS&HTML&JavaScript了薄榛。但這三大件一直都是前端的根本讳窟,這一點從未改變。而這三大件中JavaScript又是重中之重敞恋。

接下來我會結合我的一點經(jīng)驗丽啡,給出前端學習路線的一些具體建議。

目錄

三大件學習

庫工具

前端框架( MVVM )的學習

瀏覽器 & 計算機基礎

前端工程化

性能優(yōu)化

Nodejs

數(shù)據(jù)結構和算法

依葫蘆畫瓢

三大件學習

現(xiàn)在每年依舊有很多初級入門的前端開發(fā)耳舅。所以對初入門的朋友也給出一點意見碌上。

剛入門的朋友,我覺得不應該一開始就學習像Vue浦徊、TypeScript馏予、Webpack等知識。應該把重點放在CSS&HTML&JavaScript基礎知識的學習上盔性。

CSS & HTML

對于剛入門的朋友我依舊建議先將CSS(3)&HTML(5)的知識點認真學習一遍霞丧。學習的途中最好是學習完一部分就自己在敲一遍代碼,加深自己的記憶冕香。

當然如果你愿意蛹尝,建議你可以先仿一個網(wǎng)站的靜態(tài)頁面(掘金、知乎等都可以)悉尾,有一些屬性就可以了解他實際的實現(xiàn)場景突那。

當然剛開始敲代碼的時候還是不要過分依賴自動補全功能,一開始就使用自動補全對你記憶一些屬性時沒有幫助的构眯;踏實點學習愕难,日后會有回報的。

關于 CSS(3) 你需要了解的一些知識點

盒模型(標準 & IE )

flex、float猫缭、Normal Flow 等的理解

CSS 常用選擇器

行內葱弟、內部、外部樣式的區(qū)別

CSS 層疊規(guī)則

BFC 與 IFC 的了解

CSS3 的 transform猜丹、transition芝加、animation 等屬性的運用了解

響應式布局的理解

……

CSS 說容易也容易,說復雜也復雜射窒;因為 CSS 總是能給你意外的驚喜藏杖。

HTML(5) 你需要了解的一些知識點

說到 HTML 我想有很多人是div一把梭。因為div用的爽轮洋,不用擔心默認樣式制市。

有人說 HTML 語義化的優(yōu)點很多,比如清晰的頁面結構弊予、有利于 SEO祥楣、便于團隊開發(fā)和維護;這些我都承認汉柒,不過我還是喜歡div一把梭误褪。

HTML 語義化( 不是很理解為什么面試總會問 )

canvas

本地存儲( localStorage、sessionStorage碾褂、cookie 的理解 )

video 和 audio 的使用

應用緩存( cache manifest )

……

JavaScript

JavaScript一直都是我們前端的基石兽间,一定程度上JavaScript的理解深度決定了你的發(fā)展。所以一定要用心學習正塌。

現(xiàn)在很多人一看到閉包嘀略、原型鏈、作用域鏈乓诽、繼承之類的文章都是直接跳過帜羊,你現(xiàn)在可以自問一下你的確理解這些基礎的知識點嗎?

JavaScript的基礎知識點確實很多鸠天,所以《JavaScript 高級程序設計》 寫了 700 多頁讼育;不過當你 JS 基礎扎實后,你會發(fā)現(xiàn)你在學習框架稠集、亦或是學習框架源碼的時候會輕松許多奶段。

JavaScript(ES6+) 你需要了解的一些知識點

類型轉換

this

作用域(作用域鏈)

原型鏈以及繼承

閉包的理解

動態(tài)作用域和詞法作用域

JavaScript 執(zhí)行機制

promise & async

……

上面說的CSS&HTML&JavaScript的基礎知識點并不需要你一入門就全部都理解透徹;有些雖然是基礎剥纷,但卻也有它的難度痹籍。就算是高級也不敢說自己全都掌握了,有句話說的挺好 —— 書讀百遍晦鞋、其義自見词裤。

我們第一遍學習不可能盡懂刺洒,到最少可以給我留下一個印象。過一段時間再學習這塊知識點的時候吼砂,你肯定會有一個全新的理解。學習只一個需要一直在線的任務鼎文,重復的學習可以幫助你保持持續(xù)的競爭力渔肩。

我先聲明一點,我并沒有說其他技術不需要去學習拇惋,只不過初入門最好重點是先將基礎夯實周偎。

其實三大件的學習不需要花費多少時間,有基礎的大概 3 個月就可以大致的看一遍撑帖。是否真的理解這是后話蓉坎,不過已經(jīng)算是入門了。

CSS & HTML & JavaScript 推薦書籍/網(wǎng)站

_ W3C 的 CSS&HTML 網(wǎng)絡教程

《CSS 權威指南》

《CSS 揭秘》

《JavaScript 高級程序設計》

《你不知道的 JavaScript》上卷

_?ECMAScript 6 入門

HTML 不知道推薦什么書胡嘿。我個人覺得看教程和動手實踐就基本沒什問題蛉艾。

接下來我們就可以學習一些工具類的庫了。

庫工具

對于庫工具而言我們常用的有 JQuery衷敌、underScore勿侯、zepto、Moment 等

JQuery: 降低開發(fā)者操作 DOM 的復雜度

UnderScore: 提供實用的函數(shù)

Zepto: JQuery 的簡化版

Moment: 日期和時間操作庫

這些庫給我們提供了很大的便利缴罗,省去了我們編寫相關方法的時間助琐,同時也是我們的程序更加穩(wěn)健 —— 我們自己寫的方法很可能在某些情況下就出 bug 了。

當然對于這些庫我們不僅僅只是去了解 API面氓,我們需要去學習它的源碼兵钮。看看如果自己寫相關方法的話是不是也想到了這種方式舌界,這些庫工具是也是一個很好的學習工具掘譬,我們不應該忽略。

比如讓你自己實現(xiàn)節(jié)流函數(shù)禀横,你會如何實現(xiàn)屁药。

過濾對象應該如何實現(xiàn)

……

這種問題的答案不就在 Underscore 源碼里面嗎?

我們在學習庫工具的時候柏锄,必定是需要回頭看 JavaScript 基礎的酿箭;這也就進一步夯實了基礎。

前端框架( MVVM )的學習

當下最火的框架想必一定是 React 和 Vue趾娃,如果 JQuery 的存在是是我們更加方便的操作 DOM,那么現(xiàn)在 MVVM 框架則是讓我們從手動更新 DOM 的繁雜操作中解放出來缭嫡。

至于 React 和 Vue 該學習哪一個,更多的還是看當下公司使用的是哪一個(也不是必然)抬闷。對于 Vue(React) 該如何使用其實不用多久就能上手妇蛀,我們更應該關心的是他們背后的設計思想和實現(xiàn)原理耕突。

一些問題

響應式的基本原理是什么

發(fā)布訂閱模式的理解

Virtual DOM 的理解

前端路由的實現(xiàn)原理

nextTick / setState 的實現(xiàn)原理

diff 算法

單頁面應用(SPA)的原理和優(yōu)缺點

……

我們對于框架的 API 使用沒必要花太多時間,應該多研究他們背后的設計思想和實現(xiàn)原理评架。

Vue 和 React 我該選擇哪一個眷茁?

對于這個問題相比很多人都有困擾(有些人兩個都學,也就沒有這個困擾)纵诞,這個問題已經(jīng)有很多人回答了上祈。但我還是覺得不是非要選擇哪一個才是政治正確,選擇你需要的浙芙。

感興趣的可以看看這篇文章:

React or Vue: Which Javascript UI Library Should You Be Using?

以下是提煉的文中觀點:

Vue的優(yōu)勢是:

模板和渲染函數(shù)的彈性選擇

簡單的語法和項目配置

更快的渲染速度和更小的體積

React的優(yōu)勢是:

更適合大型應用和更好的可測試性

同時適用于 Web 端和原生 App

更大的生態(tài)系統(tǒng)登刺,更多的支持和好用的工具

Vue 相關資料

對于框架的一些學習資料我個人更傾向于推薦官方文檔,有很多問題官方文檔已經(jīng)說得很清楚了嗡呼。市面上有些書籍也就是對官方文檔進行了一個擴寫(不排除有精良之作)纸俭。

Vue 官網(wǎng)?&?Vue Router 官網(wǎng)?&?Vuex 官網(wǎng)

剖析 Vue.js 內部運行機制?掘金小冊

vue 技術揭秘

瀏覽器 & 計算機基礎

如果你希望能能快速進階到高級工程師,那么對于瀏覽器 & 計算機基礎的知識你就必要又有一定的掌握南窗。因為這能讓你更好的理解前端揍很。

瀏覽器一直是 JavaScript 最重要的宿主環(huán)境,所以我們必須去了解 JavaScript 在瀏覽器中是如何執(zhí)行的矾瘾。

我們前端開發(fā)接觸最多的應該就是瀏覽器了女轿,記得工作第一年最頭痛的就是處理 IE 的兼容問題。工作中出現(xiàn)的很多問題都和瀏覽器有關壕翩,所以我覺得了解瀏覽器工作原理是非常有必要的蛉迹。

為何要學習瀏覽器工作原理?

準確評估 Web 開發(fā)項目的可行性

從更高維度審視頁面

解決面試中遇到的絕大部分瀏覽器問題

計算機基礎

對于計算機基礎我們需要做到大體了解放妈,這樣的話我們對整體的流程會有一個大概的把握北救。在實際開發(fā)過程中不會過于被動。

需要了解的一些知識點

瀏覽器緩存機制

瀏覽器中 JavaScript 的執(zhí)行機制

頁面渲染原理

瀏覽器安全問題

瀏覽器為什么會跨域

如何系統(tǒng)的優(yōu)化頁面

HTTP 與 HTTPS 的區(qū)別

TCP/IP 協(xié)議

三次握手和四次揮手

CDN 的作用和原理

正向代理與反向代理的特點

……

這里僅僅列出了一部分知識點芜抒,如果想全面的學習可以看下面推薦的資料珍策。

瀏覽器 & 網(wǎng)絡基礎推薦書籍/資料

《瀏覽器工作原理與實踐?》專欄

《圖解 HTTP》

《網(wǎng)絡是怎樣連接的》

前端工程化

從事前端稍微久一點的開發(fā)就一定會有這個感受 —— 前端開發(fā)越來越工程化,越來越復雜宅倒。

對于前端開發(fā)來說攘宙,現(xiàn)在前端要做的不只是切頁面調接口這么簡單,我們需要了解的技術無疑更加廣泛拐迁。

前端工程化的一點淺見

由于項目的復雜度越來越高蹭劈,前端需要做的工作就越來越繁重。當項目復雜就會產(chǎn)生許多問題线召,比如:

如何進行高效的多人協(xié)作铺韧?

如何保證項目的可維護性?

如何提高項目的開發(fā)質量缓淹?

如何降低項目生產(chǎn)的風險哈打?

前端工程化細分的話我覺得可以分成模塊化塔逃、組件化、規(guī)范化三個方向料仗⊥宓粒或者說一切能提升前端開發(fā)效率,提高前端應用質量的手段和工具都是前端工程化的實踐罢维。

模塊化

JavaScript 模塊化

CSS 模塊化

資源模塊化

組件化

從 UI 拆分下來的每個包含模板(HTML)+樣式(CSS)+邏輯(JS)功能完備的結構單元淹仑,我們稱之為組件。

也就是將復雜頁面按功能拆分成多個獨立的組件肺孵。

規(guī)范化

編碼規(guī)范

接口規(guī)范

git 使用規(guī)范

CodeReview

UI 元素規(guī)范

前端工程化一些知識點

理解 Babel、ESLint颜阐、webpack 等工具在項目中的作用

Babel 的核心原理

Webpack 的編譯原理平窘、構建流程、熱更新原理

nginx 的基本理解

理解 Git 的工作流程

Mock 的意義及優(yōu)點

性能優(yōu)化

提起性能優(yōu)化凳怨,大家最先想到的是什么瑰艘?我最先想到的是一道面試題:

從輸入 URL 到頁面加載完成的具體過程

因為從直觀層面來看,我們前端需要優(yōu)化的步驟基本都在這個加載工程當中肤舞。

性能優(yōu)化現(xiàn)在對于前端來說已經(jīng)是必不可少的技能了紫新,當然現(xiàn)在有些所謂的性能優(yōu)化的技巧現(xiàn)在都成為了一種需要遵從的規(guī)范。

我們需要關注兩個方向的性能優(yōu)化:

運行時的優(yōu)化

開發(fā)時的優(yōu)化

性能優(yōu)化一些知識點

前端性能衡量指標李剖、性能監(jiān)控(performance,LightHouse)

常見的性能優(yōu)化方案有哪些

SSR 方案的性能優(yōu)化

Webpack 的性能優(yōu)化方案

React芒率、Vue 等框架使用性能優(yōu)化方案

網(wǎng)絡層面的優(yōu)化方案

頁面渲染層面的優(yōu)化方案

白屏的優(yōu)化方案

……

推薦資料

《大型網(wǎng)站性能優(yōu)化實戰(zhàn)》

《前端性能優(yōu)化原理與實踐》掘金小冊

Nodejs

我們知道由于 Nodejs 的出現(xiàn),前端開發(fā)出現(xiàn)了一個新的高潮篙顺。JS 開始可以涉及后端領域偶芍,JS 的可能性更大了。

Nodejs 一些知識點

Nodejs 在應用程序中的作用

Express 和 Koa 的區(qū)別

Nodejs 的底層運行原理德玫、和瀏覽器的異同

Nodejs 非阻塞機制的實現(xiàn)原理

……

數(shù)據(jù)結構和算法

這一點我也比較薄弱匪蟀,就不展開了。關于這部分你可以刷 leetcode宰僧。

另外推一本書《學習 JavaScript 數(shù)據(jù)結構與算法》(第三版)

依葫蘆畫瓢

我們在項目開發(fā)的過程中可以接觸到很多優(yōu)秀的庫工具或者是 UI 庫材彪。如 lodash、underscore琴儿、moment段化、element-ui、antd design 等凤类。

我們可能自己設計不出來這么優(yōu)秀的工具穗泵,但是我們完全可以依葫蘆畫瓢自己按著這些工具寫一遍,你就會發(fā)現(xiàn)里面有很多不可思議的技巧谜疤、優(yōu)秀的思想佃延。

依葫蘆畫瓢對學習來說也是一個非常有用的技巧现诀。

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市履肃,隨后出現(xiàn)的幾起案子仔沿,更是在濱河造成了極大的恐慌,老刑警劉巖尺棋,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件封锉,死亡現(xiàn)場離奇詭異,居然都是意外死亡膘螟,警方通過查閱死者的電腦和手機成福,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來荆残,“玉大人奴艾,你說我怎么就攤上這事∧谒梗” “怎么了蕴潦?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長俘闯。 經(jīng)常有香客問我潭苞,道長,這世上最難降的妖魔是什么真朗? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任此疹,我火速辦了婚禮,結果婚禮上蜜猾,老公的妹妹穿的比我還像新娘秀菱。我一直安慰自己,他們只是感情好蹭睡,可當我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布衍菱。 她就那樣靜靜地躺著,像睡著了一般肩豁。 火紅的嫁衣襯著肌膚如雪原押。 梳的紋絲不亂的頭發(fā)上匆光,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機與錄音,去河邊找鬼跪削。 笑死拜英,一個胖子當著我的面吹牛咧栗,可吹牛的內容都是我干的蒂誉。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼篡悟,長吁一口氣:“原來是場噩夢啊……” “哼谜叹!你這毒婦竟也來了匾寝?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤荷腊,失蹤者是張志新(化名)和其女友劉穎艳悔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體女仰,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡猜年,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了疾忍。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片乔外。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖一罩,靈堂內的尸體忽然破棺而出袁稽,到底是詐尸還是另有隱情,我是刑警寧澤擒抛,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站补疑,受9級特大地震影響歧沪,放射性物質發(fā)生泄漏。R本人自食惡果不足惜莲组,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一诊胞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧锹杈,春花似錦撵孤、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至咬清,卻和暖如春闭专,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背旧烧。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工影钉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掘剪。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓平委,卻偏偏與公主長得像,于是被迫代替她去往敵國和親夺谁。 傳聞我的和親對象是個殘疾皇子廉赔,可洞房花燭夜當晚...
    茶點故事閱讀 44,941評論 2 355