前言php
如今是信息時代,通過 web1.0 時期、web2.0 時期到如今的移動互聯網時期,信息獲取愈來愈高效,坐着不動就會有大量的新聞、博客、資訊向你推薦而來。做爲一名靠譜的程序員,你免不了要查閱大量的文章、視頻和書籍來充斥你的知識量,不斷學習。可是如今網上大量的信息堆積起來,對於你來講意味着什麼?你如何去合理的篩選、梳理這些得到的信息,又如何去知道本身如今還缺什麼信息?css
到這裏就應該提出本文的主題 —— 知識體系 。其實不管針對哪一個知識領域,它都是有一套完整的、成型的知識體系和標準做爲支撐的,例如數學、建築、醫學、機械等等,固然包括計算機編程,其中確定包括前端開發。html
有了完善的知識體系,再來面對大量的信息獲取,你就知道每一個信息所說的知識點是屬於知識體系中的哪一個部分。同時,你也會很清楚本身哪些部分掌握的好,哪些部分掌握的很差,甚至哪些部分本身壓根都沒據說過。前端
如何構建知識體系vue
學習新的知識並不難,真正難的是你不知道本身如今還有哪些須要去學。java
你也許學過 html css js jQuery webpack vue React nodejs git linux 設計模式 算法 …… 等各類前端開發須要的不少知識和技術,可是他們之間到底應該怎麼聯繫起來,能造成怎樣的知識網絡。以及,在這個知識網絡中,還有哪些是你沒有考慮到或者學會的。這確實是一個問題,須要你去主動思考,並且還要找到正確的方法。node
下面向各位讀者分享一下個人分析方法。不過須要說明,這個問題的分析方法沒有標準答案,所以個人方法也不見得是最正確的,所以僅供參考。linux
也許你聽過 程序 = 算法 + 數據結構
這句話,那麼這句話是針對哪一種開發人員說的呢?是寫 js 的、寫 java 的仍是寫 C++ ?答案是針對全部的程序員,不管你是前端、客戶端、server 端,都適用。那麼這些針對全部程序員都適用的東西,就稱之爲基礎知識。webpack
通常來講基礎知識分爲:git
這部分我以爲是前端程序員最容易忽略的,由於只有複雜的邏輯處理才能讓這些知識有用武之地。從前端的最初時代到 jQuery 時代,受限於網速、瀏覽器、JS 引擎這些限制,JS 基本就是一個腳本,驗證一下表單、操做一下 DOM、修改一下樣式 ,沒有什麼複雜的業務邏輯。
可是如今不同了,網速愈來愈快、瀏覽器和 JS 引擎足夠強大,並且 vue React 等框架流行開來,使得前端 JS 的業務邏輯愈來愈大,這些基礎知識必須掌握。最後別忘了,nodejs 都盛行多年了,這可以讓 JS 運行到 server 了,和 php java 等幹同樣的事情。
最後補充一句。其實編程基礎也不止這幾個,像編碼、編譯原理、計算機組成、網絡等這些都是基礎,可是並不會和前端開發直接相關(或者和咱們平常開發相關性不大),這裏就再也不深究了。有興趣的讀者,能夠本身繼續補充。
爲什麼要用 var
定義變量?爲什麼使用 document.getElementById
能夠獲取元素對象?你也許會回答:「瀏覽器就這麼規定的」。那麼繼續追問,瀏覽器爲什麼這麼規定?並且恰恰那麼多款瀏覽器都是這樣統一約定好的?—— 答案是有一些統一的標準限定着它們,瀏覽器必須按照這些標準來解析 JS HTML CSS 等語法。
若是瀏覽器不按照這些標準來解析怎麼辦?—— 請參見以前臭名昭著、如今沒落的 IE 瀏覽器
第一個標準是 ECMA-262 標準 ,JS 和 ES6 的基本詞法、語法都是這個標準來制定且推行的。忽略細節,其中比較重要的有:
第二個標準是 W3C 標準 ,除了 JS 和 ES6 基礎語法,其餘經常使用的功能都是這個標準制定的,主要的包括:
標準一方面指導開發人員如何寫代碼,一方面指導瀏覽器如何運行代碼。即,代碼和瀏覽器之間,就靠這個標準來緊密相連。
開發環境是比較多變並且複雜的,也是最很差總結的一部分,每一個公司或者團隊使用的工具和環境可能都不同。可是根據咱們平常開發的基本順序,能夠歸納爲如下幾點:
暫時先不考慮 nodejs 的話,前端代碼的運行環境主要分爲兩種。第一種是標準的瀏覽器環境,即運行在咱們常見的瀏覽器中。此處須要考慮的問題是:
第二種是運行在非標準的瀏覽器環境,即一個特定 app 的 webview 中。例如頁面在微信中展現,或者 hybrid 形式。這種狀況除了要考慮上述的幾個問題以外,還應該再考慮:
以上四個部分總結完以後,你會發現遺漏了一塊很重要的內容,就是框架和類庫,例如 vue React jQuery underscore 等。這也是我本身在總結過程當中遇到的一個問題。
若是你不仔細思考的話,你會很容易將「框架和庫」列爲第五項,和前四項並列,可是我不敢苟同。讓咱們來仔細分析如下就知道了,就拿列出的這四個例子:
最後再想一下,若是真的把「框架和庫」做爲第五項單獨拿出來,前端開發中可用的框架和庫那麼多,不得把這部分給撐爆了?—— 這樣明顯不是一個合理的設計。任何框架和庫的出現,都是爲了知足咱們平常開發的效率和設計,說白了都是對已有方式的一種改進和補充(由於基礎和標準不常變),所以上文中的前四項,確定能找到它們各自的位置。
你們都對號入座,而不是扎堆在一塊兒。這纔是合理的設計。
知識體系腦圖
通過上文的分析,現畫出一個最終的腦圖,作一個彙總。不過這個圖的粒度仍是太粗,讀者能夠繼續細化、完善,而後歡迎共享給你們。
總結
與其說本文提供了一個前端知識體系,不如說提供了一個分析和完善知識體系的方法,很但願能看到各位讀者能繼續完善並總結出本身的知識體系。
其實還有不少前端涉及的知識沒有體現到該圖中,如 server 端的 nodejs ,和客戶端結合的 PWA RN 等,這些我還在思考如何以更加合理的方式歸入到體系中。