搜尋
首頁web前端html教學web前端知識體系總結

web前端知識體系總結

Oct 15, 2017 am 11:10 AM
web總結

1. 前言

  大約在幾個月之前,讓我看完了《webkit技術內幕》這本書的時候,突然有了一個想法。想把整個web前端開發所需的知識都之中在一個視圖中,形成一個完整的web前端知識體系,目的是想要顛覆人們對於前端只有三大塊(html、css、js)的認識-做web前端需要的比這三大塊多得多

  拖了好幾個月了,但是由於近期將要參加的某一個活動,我不得不這兩天把這個東西整出來。說乾就乾。上午我就開始在辦公室畫草圖,亂七八糟的在那裡理思路。

  

  大家不要害怕,其實下文中的這個知識框架要比草圖中的好看的多,草圖大家權當沒看見。

  好了,廢話不扯。下面請跟隨我本部落格的內容,來看看web前端開發除了htm、css和js之外,還有哪些東西需要你一步一步去掌握。

  

  在看內容之前,先來看看這個知識架構的預覽圖。圖片太大不好展示,看不清除,可在此下載清晰版:http://pan.baidu.com/s/1hqIUvUc (內有整個知識體系的圖片和xmind檔)

  

2. 分類

  所有知識框架,那肯定是一個結構型的展現,就是一棵樹。 web前端的知識點非常多,也非常散,需要好幾層結構來組織這個體系,否則就會顯得很亂。那麼如何整理、把誰和誰放在一塊兒?這是真正值得我們去思考的,你也可以自己去思考這個問題。

  在我總結的這個知識框架中,首先第一層我劃分為:理論知識,類別庫框架,編碼開發,運行環境。如下圖:

  

  接下來跟大家解釋一下:

  這個圖要從下往上看,為何? ——因為下面是上面的基礎;

  • 首先,我們需要一定的理論知識,不管是你聽別人講授、自己看書還是網上淘資料,你都需要一定的理論知識,每一種程式開發,都避免不了。

  • 第二,有了這些理論知識我們就可以編碼了——不錯——but,沒有人能抵擋住第三方框架和類別庫的誘惑,例如jquery;

  • 第三,有了這些理論知識和協助我們的類別庫框架,我們就可真正的編碼了。大家可能以為程式開發不就是寫程式嗎,還有啥? ——這裡面道多著呢;

  • 最後,開發程式的目的,最終是為了能高效、穩定的運行在相應的環境中,這其中又有哪些事情需要我們去做?請期待;

3. 理論知識包括「軟知識」與「硬知識」

  「軟知識」與「硬知識」大家可能覺得詞陌生,其實我一說大家就能明白。

  

  • 所謂「軟」的就是能在各個程式開發中都用到的,算是基本功、內功,例如資料結構、演算法、設計模式、物件導向等等;

  • 所謂「硬」的就是能直接用於本程式開發的。用C語言你就得學C語言文法,此時學java沒用。我們web前端開發所需的硬知識其實都包含在三個標準裡面:http標準、W3C標準和ECMAScript標準;

4. 聊聊web前端開發中的「硬知識」

  「軟知識」的內容非常多,也是我們大學時代學習的重點(沒學好是另一回事兒,畢業再惡補)。我們這次主要討論的是web前端這一方向,因此就點到為止,讓大家知道這些知識也在知識體系中扮演重要角色。

  剛才說道,硬知識有三個標準:http標準、W3C標準和ECMAScript標準,那咱們就挨個聊聊這三個標準。

4.1 http標準

  為什麼要做web前端要了解http標準? ——因為瀏覽器要從服務端取得網頁,網頁也可能將資訊再提交給伺服器,這其中都有http的連線。 web系統既然跟http連結有瓜葛,就必須去了解它。

  

  我的意見是:你不必去非常了解http的詳細內容,但是你要了解web前端開發常用的一些http的知識——就是上圖中我列出來的那些。當然,我知識列了一個綱,詳細內容還得靠你自己去查閱(這篇文章講的是知識框架,不會涉及任何知識點的詳細內容)

  關於這方面的知識,建議去查閱《圖解http》這本書,淺顯易懂的講述了這些內容,我曾經也看過。

4.2 W3C標準

  如果說你只知道web前端的一個標準,估計肯定是W3C標準了(據我了解,貌似大部分人真的都只知道這一個標準) 。它的內容非常多,看看www.w3.org/TR/這個頁面。

  寫到這裡讓我想起了一句話:2/8原則-20%的功能滿足80%的需求。我覺得這句話用到這裡很合適,我們在平常開發過程中根本用不到這麼多東西。反而,你要把平常用的多的東西搞懂了。

  下圖的這些知識,我想不用再過多解釋了,這就是我文章開發說的「三大塊」(html、css、js)。現在你要知道,它們只不多是W3C標準的一部分,而W3C標準也只是web前端開發知識體系的一部分而已。

  (下圖沒有完全展開,想看權展開的圖,可下載本文一開始提供的附件)

  

  關於CSS的基礎知識,毛遂自薦一下自己之前的一篇系列部落格:《CSS知多少》

4.3 ECMAScript  

  簡稱ES,寫全稱太麻煩了。

  有些人可能只知道javascript,而不知道ES——其實,js是在ES的基礎上,為web瀏覽器做了一部分封裝(增加了DOM操作、BOM操作等)。

  

  如上圖中的這些概念,大家可能平常都在javascript中看到,其實他們是ES的內容。只不過javascript繼承了ES的這些特性,javascript用的比較廣泛,因此才會在js中討論的多一些。

  還是那個「2/8原則」。其實ES中的內容也非常多,而且更新很快,現在都到ES6了。但是我上圖列出來的這些都是最重要的概念。如果你不懂原型、閉包和作用域,那就表示你還不完全了解ES,也就是不完全會用javascript。

  在此毛遂自薦自己之前的一篇系列博客,大家可以去參考:《深入理解javascript原型和閉包系列》

5. 框架和類別庫

#前面已經描述完了web前端開發所需的理論知識。如何實踐呢? ——不能蠻幹——還得繞世界去看看,有哪些大牛已經為我們做出瞭如此多的貢獻。

  用以下的這些類別函式庫或框架,能大幅提升你的開發效率。

  

  • 首先,jquery一定是大部分web前端開發者不可或缺的工具。而我利用jquery不只停留在只使用它的API和插件上,我還會自己去寫jquery插件,我還會去讀jquery的源碼、了解jquery的設計思路。如果你也能那樣做,請相信我,你會收穫到意想不到的效果。 如果有一個問題:怎麼才能最透徹的理解javascript的事件系統?最佳答案之一:讀幾遍(一遍可能讀不懂)jquery關於事件處理部分的源碼!

  • bootstrap不用再過度解釋了吧,從github上的排名也能看出道道來。甚至連我們公司的UI設計師,都從bootstrap截圖當作素材。

  • fontAwesome是全世界最強大的圖示系統。相較於css製作圖示來說,這個好很多倍,不管是開發、效率還是維護上。 icomoon.io能讓我自訂選擇自己的圖示檔案。

  • requirejs和seajs這種模組定義系統,也一定是你係統中不可或缺的。我曾經看過一個教程,講師就說:requirejs帶來了既jquery之後的第二次前端技術變革。

  • 其他的,backbone、angular、react這些也慢慢的開始發揮了他們的價值,此處精力有限就不再贅述了——但是,他們很重要——你至少要試著去了解它們。

6. 編碼開發

  要問編碼IDE哪家強,當然要屬微軟的visual studio!但即便是微軟的VS最新版本,它也取代不了下面要說的這套開發環境。

  

  如果你專門做web前端,就不要在用vs了,當然要選擇sublime。寫html語句還用手動一條一條寫嗎?你要需要zencoding的協助,否則效率太差了。

  另外,針對html、css、js的壓縮、合併、語法檢查,檔案的清除、複製這些操作,你還要手動去做嗎? ——你需要grunt或gulp的幫助。

  在此毛遂自薦自己的教學《用grunt搭建自動化web開發環境》,講的比較詳細,適合初學者學習。

  如果你的系統中有比較多的js程式碼或文件,請選擇一個合適的模組定義規格-CMD / AMD

  請用git來幫你做文件版本管理,最簡單的就是使用github。

  調試、測試,也都有專門的工具,都是需要學的……

  ——我的天哪……這些字寫到現在寫的我的手都酸了,別說要學這些知識了——再也別說我們web前端是「三大塊」了!

7. 運作環境

  當系統真正到了運作環境中,當你覺得終於完事兒的時候,其實還有好幾個知識點需要你掌握。看下圖:

  

#

  首先,你要知道web系統雖然大部分是在瀏覽器下運行,但是js可能會被運行在node環境中。

  在瀏覽器環境下,最重要的兩點是:web安全性和效能最佳化。需要注意的綱要我都列出來了,如果想了解推薦兩本書《白帽子將web安全》《高性能網站建設指南》

8. 其他

  以上這些是全部的知識體系。如果你想成為合格的、讓leader喜歡的程式猿,你除了知道這些知識之外,我覺得還需要以下幾點:

  • 要了解敏捷軟體開發流程(如SCRUM)和專案管理知識(如考取PMP),這也屬於一種「軟」知識吧;

  • 要學會在網路上和別人交流(部落格、qq群、開源專案),溝通能讓自己看到自己的不足;

  • 要學會自我反省和自我學習。就像我現在一樣,試著自己總結屬於自己的東西,隨時反省隨時進步。

#

以上是web前端知識體系總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
說明將一致的編碼樣式用於HTML標籤和屬性的重要性。說明將一致的編碼樣式用於HTML標籤和屬性的重要性。May 01, 2025 am 12:01 AM

一致的HTML編碼風格很重要,因為它提高了代碼的可讀性、可維護性和效率。 1)使用小寫標籤和屬性,2)保持一致的縮進,3)選擇並堅持使用單引號或雙引號,4)避免在項目中混合使用不同風格,5)利用自動化工具如Prettier或ESLint來確保風格的一致性。

如何在 Bootstrap 4 中實現多項目輪播?如何在 Bootstrap 4 中實現多項目輪播?Apr 30, 2025 pm 03:24 PM

在Bootstrap4中實現多項目輪播的解決方案在Bootstrap4中實現多項目輪播並不是一件簡單的事情。雖然Bootstrap...

deepseek官網是如何實現鼠標滾動事件穿透效果的?deepseek官網是如何實現鼠標滾動事件穿透效果的?Apr 30, 2025 pm 03:21 PM

如何實現鼠標滾動事件穿透效果?在我們瀏覽網頁時,經常會遇到一些特別的交互設計。比如在deepseek官網上,�...

HTML 視頻的播放控件樣式怎麼修改HTML 視頻的播放控件樣式怎麼修改Apr 30, 2025 pm 03:18 PM

無法直接通過CSS修改HTML視頻的默認播放控件樣式。 1.使用JavaScript創建自定義控件。 2.通過CSS美化這些控件。 3.考慮兼容性、用戶體驗和性能,使用庫如Video.js或Plyr可簡化過程。

在手機上使用原生select會帶來哪些問題?在手機上使用原生select會帶來哪些問題?Apr 30, 2025 pm 03:15 PM

在手機上使用原生select的潛在問題在開發移動端應用時,我們常常會遇到選擇框的需求。通常情況下,開發者傾...

在手機上使用原生select的弊端是什麼?在手機上使用原生select的弊端是什麼?Apr 30, 2025 pm 03:12 PM

在手機上使用原生select的弊端是什麼?在移動設備上開發應用時,選擇合適的UI組件是非常重要的。許多開發者�...

如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?如何使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理?Apr 30, 2025 pm 03:09 PM

使用Three.js和Octree優化房間內第三人稱漫遊的碰撞處理在Three.js中使用Octree實現房間內的第三人稱漫遊並添加碰�...

在手機上使用原生select會遇到哪些問題?在手機上使用原生select會遇到哪些問題?Apr 30, 2025 pm 03:06 PM

使用原生select在手機上的問題在移動設備上開發應用時,我們經常會遇到需要用戶進行選擇的場景。雖然原生sel...

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。