大約在幾個月以前,讓我看完了《webkit技術內幕》這本書的時候,忽然有了一個想法。想把整個web前端開發所須要的知識都之中在一個視圖中,造成一個完整的web前端知識體系,目的是想要顛覆人們對於前端只有三大塊(html、css、js)的認識——作web前端須要的比這三大塊要多得多。javascript
拖了好幾個月了,可是因爲近期將要參加的某一個活動,我不得不這兩天把這個東西整出來。說幹就幹。上午我就開始在辦公室畫草圖,亂七八糟的在那兒理思路。css
下面請跟隨我本博客的內容,來看看web前端開發除了htm、css和js以外,還有哪些東西須要你一步一步去掌握。在看內容以前,先看一下這個知識框架的預覽圖。html
全部知識框架,那確定是一個結構型的展示,就是一棵樹。web前端的知識點很是多,也很是散,須要好幾層結構來組織這個體系,不然就會顯得很亂。那麼如何組織、把誰和誰放在一起?這是真正值得咱們去思考的,你也能夠本身來思考一下這個問題。前端
在我總結的這個知識框架中,首先第一層我劃分爲:理論知識,類庫框架,編碼開發,運行環境。以下圖:java
接下來給你們解釋一下:node
這個圖要從下往上看,爲什麼?——由於下面是上面的基礎;react
「軟知識」和「硬知識」你們可能以爲詞陌生,其實我一說你們就能明白。jquery
「軟知識」的內容很是多,也是咱們大學時代學習的重點(沒學好是另回事兒,畢業再惡補)。咱們本次主要討論的是web前端這一個方向,所以就點到爲止,讓你們知道這些知識也在知識體系中扮演重要角色。git
剛纔說道,硬知識有三個標準:http標準、W3C標準和ECMAScript標準,那我們就挨個聊聊這三個標準。github
爲何作web前端要了解http標準?——由於瀏覽器要從服務端獲取網頁,網頁也可能將信息再提交給服務器,這其中都有http的鏈接。web系統既然和http連接有瓜葛,你就必須去了解它。
個人意見是:你沒必要去很是瞭解http的詳細內容,可是你要了解web前端開發經常使用的一些http的知識——就是上圖中我列出來的那些。固然,我知識列了一個綱,詳細內容還得靠你本身去查閱(本文章講的是知識框架,不會涉及任何知識點的詳細內容)
關於這方面的知識,建議去查閱《圖解http》這本書,淺顯易懂的講述了這些內容,我曾經也看過。
若是說你只知道web前端的一個標準,估計確定是W3C標準了(據我瞭解,貌似大部分人真的都只知道這一個標準)。它的內容很是多,看看www.w3.org/TR/這個頁面。
寫到這裏讓我想起了一句話:2/8原則——20%的功能知足80%的需求。我以爲這句話用到這裏很是合適,咱們在平時開發過程當中根本用不到這麼多東西。反而,你要把平時用的多的東西搞懂了。
下圖的這些知識,我想不用再過多解釋了,這就是我文章開發說的「三大塊」(html、css、js)。如今你要知道,它們只很少是W3C標準的一部分,而W3C標準也只是web前端開發知識體系中的一部分而已。
(下圖沒有徹底展開,想看權展開的圖,可下載本文一開始提供的附件)
關於CSS的基礎知識,毛遂自薦一下本身以前的一篇系列博客:《CSS知多少》
簡稱ES,寫全稱太麻煩了。
有些人可能只知道javascript,而不知道ES——其實,js是在ES的基礎上,爲web瀏覽器作了一部分封裝(增長了DOM操做、BOM操做等)。
如上圖中的這些概念,你們可能平時都在javascript中看到,其實他們是ES的內容。只不過javascript繼承了ES的這些特性,而且javascript用的比較普遍,所以纔會在js中討論的多一些。
仍是那個「2/8原則」。其實ES中的內容也很是多,並且更新很快,如今都到ES6了。可是我上圖中列出來的這些都是最重要的概念。若是你不懂原型、閉包和做用域,那就說明你還不徹底瞭解ES,也就是不徹底會用javascript。
在此毛遂自薦本身以前的一篇系列博客,你們能夠去參考:《深刻理解javascript原型和閉包系列》
前面已經描述完了web前端開發所須要的理論知識。如何實踐呢?——不能蠻幹——還得繞世界去看看,有哪些大牛已經爲咱們作出瞭如此多的貢獻。
用下面的這些類庫或者框架,能大大提升你的開發效率。
要問編碼IDE哪家強,固然要屬微軟的visual studio!可是即使是微軟的VS最新版本,它也代替不了下面要說的這套開發環境。
若是你專門作web前端,就不要在用vs了,固然要選擇sublime。寫html語句還用手動一條一條寫嗎?你得須要zencoding的協助,不然效率太差了。
另外,針對html、css、js的壓縮、合併、語法檢查,文件的清除、複製這些操做,你還要手動去作嗎?——你須要grunt或者gulp的幫助。
在此毛遂自薦本身的教程《用grunt搭建自動化web開發環境》,講的比較詳細,適合初學者學習。
若是你的系統中有比較多的js代碼或者文件,請選擇一個合適的模塊定義規範——CMD / AMD
請用git來幫助你作文件版本管理,最簡單的就是使用github。
調試、測試,也都有專門的工具,都是須要學的……
——個人天哪……這些字寫到如今寫的個人手都酸了,別說要學習這些知識了——再也別說咱們web前端是「三大塊」了!
當系統真正到了運行環境中,當你以爲終於完事兒的時候,其實還有好幾個知識點須要你掌握。看下圖:
首先,你要知道web系統雖然大部分是在瀏覽器下運行,可是js可能會被運行在node環境。
在瀏覽器環境下,最重要的兩點是:web安全和性能優化。須要注意的綱要我都列出來了,若是想了解推薦兩本書《白帽子將web安全》《高性能網站建設指南》