前端開發(fā)資料庫
輸入機構(gòu)/課程/服務(wù)名稱

零基礎(chǔ)如何系統(tǒng)的學習前端開發(fā)?

2021年12月09日最后更新
# 前端開發(fā) # IT培訓



一、前端通用學習方法

前端開發(fā)上手快,又容易得到反饋(頁面效果是可見的),我推薦學習一點內(nèi)容后快速實戰(zhàn),在實戰(zhàn)中找到成就感,發(fā)現(xiàn)問題,然后再帶著問題回去系統(tǒng)學習,如此往復。


二、基礎(chǔ)

html + css

這部分建議在 w3school 在線教程 上學習,邊學邊練,每章后還有小測試。 學習過程中請打開chrome瀏覽器調(diào)試工具,直接命令行在內(nèi)做些練習。

javascript

要學的內(nèi)容實在很多,如果沒有其他編程語言的基礎(chǔ)的話,學起來可能要費些力,還是建議先在 w3school上學習。之后建議馬上看《javascript語言精粹》,js是一門很混亂的語言,這本書能夠幫助你區(qū)分哪些是語言的精華,哪些是糟粕,對于語言精華,應(yīng)該深入學習。糟粕部分能看懂別人寫的代碼就行,自己就不用嘗試了。

對于習慣看視頻學習的同學,以上內(nèi)容也可以在 慕課網(wǎng)-國內(nèi)最大的IT技能學習平臺 上學習。雖然我沒用過,但好幾位同學推薦過了,大概看了下,內(nèi)容還不錯。

數(shù)據(jù)結(jié)構(gòu)和算法(2019年4月新增)

正如開篇的分析,目前市場缺的是高級前端,初級到高級的門檻不在未來,而是在過去的大學基礎(chǔ)課。

前端為什么要學這些?因為這些都是稍微復雜一點的場景解決問題的必備武器。比如,把一個列表形式的地址數(shù)據(jù),以樹形渲染到頁面,或者反過來;又比如,把一個多級嵌套的數(shù)據(jù)對象,轉(zhuǎn)化成扁平的map結(jié)構(gòu)再提交到服務(wù)器。更關(guān)鍵的,數(shù)據(jù)結(jié)構(gòu)和算法,是計算機的思維方式,尤其是分治遞歸的思想,影響到代碼實現(xiàn)、模塊設(shè)計、乃至到系統(tǒng)設(shè)計。


三、初級

有了以上基礎(chǔ),就可以進行一般的靜態(tài)網(wǎng)頁設(shè)計,不過對于復雜的頁面還需要進一步學習。

1. css

對于css的學習,我推薦分三塊:“基礎(chǔ)概念”,“css2.1規(guī)范”,“css3規(guī)范”。必看 精通CSS(第2版) (豆瓣),看完這本書你應(yīng)該對:盒子模型,流動,block,inline,層疊,樣式優(yōu)先級,等概念非常了解了。這本確實有些年頭了,但基礎(chǔ)概念部分講述非常清晰,可以稱之為經(jīng)典。ie6,7相關(guān)的內(nèi)容可以不看。css3的部分可以參考:CSS3實用指南 (豆瓣)。這本書同樣有些老,只是最新出版的書中沒發(fā)現(xiàn)有特別好的。

關(guān)于瀏覽器兼容性。webkit內(nèi)核已成為市場主流,ie6、7已成為歷史,ie8、9的市場份額在進一步縮小,總之兼容IE已不在是前端工程師面試需要考察的點。

2. javascript

上面提到內(nèi)容還不足以讓你勝任js編程。在有了基礎(chǔ)之后,進一步學習內(nèi)容包括:

2.1. 簡單框架。推薦先學 zepto,簡單易用,在w3school簡單學習js后,直接上手 zepto 即可完成一些簡單的項目。zepto 源碼簡單清晰,也適合新手閱讀。補充: 可以使用 codecademy 學習 javascript,zepto,用戶體驗真的很好(感謝 TonyOuyang )。學習zepto只是為了快速上手開發(fā)項目,獲得成就感。同時還是要關(guān)注JS原生編程的能力,尤其隨著低端瀏覽器份額的下降,很多 zepto API 已經(jīng)可以被原生瀏覽器api替代。以天貓消費者端 h5頁面為例,主要就是靠 原生JS + 少量 zepto api 的方式開發(fā)完成,配合pwa等瀏覽器最新api就可以開發(fā)出極致的用戶體驗。

2.2. 復雜框架。是指 react、vue、angular 等不直接操作dom的框架。這類框架建議js基礎(chǔ)打扎實后再學習。復雜框架是用來解決復雜問題的。對于電商無線端導購頁面來說原生JS足以。對于類似商家管理系統(tǒng)這類交互復雜,開發(fā)量大的系統(tǒng),才適合用這類框架。對于這些框架核心在于理解理念,不要只停留在會用的層面。

2.3. javascript 語言范式 。這個名字可能并不恰當,只是我找不到可以描述“面向?qū)ο蟆?,“函?shù)式”這個兩個概念的概念。javascript不完全是一個面向?qū)ο蟮恼Z言,它的很多設(shè)計理念都有函數(shù)編程語言的影子,甚至說如果你不用面向?qū)ο?,完全可以把它理解成一門函數(shù)式編程語言。javascript的很多語言特性,都是因為他具有函數(shù)式語言的特點才存在的。這部分推薦先學習面向?qū)ο蟮幕纠碚?,對封裝,繼承,多態(tài)等概念要理解,維基百科,百度百科會是你的幫手,另外推薦《object oriented javascript》,應(yīng)該有中文版。對與函數(shù)式編程可以參考這篇文章:JavaScript 中的函數(shù)式編程實踐

2.4. javascript 語言內(nèi)部機制。必須弄清如下概念:js中變量的作用域,變量傳遞方式,函數(shù)的定義環(huán)境與執(zhí)行環(huán)境,閉包,函數(shù)的四種調(diào)用方式(一般函數(shù),對象的方法,apply,call),以及四種調(diào)用方式下,‘this'指向的是誰。這部分內(nèi)容你會在《javascript語言精粹》中詳細了解。

2.5. dom編程,這個web前端工程師的核心技能之一。必讀《dom編程藝術(shù)》,另外《高性能javascript》這本書中關(guān)于dom編程的部分講的也很好。

2.6. 網(wǎng)絡(luò)編程,這部分相對簡單,就這些關(guān)鍵字,自己搜索學習即可:fetch,websocket,jsonp,cors,formData。另外,Ajax已經(jīng)被 Fetch Standard 取代,學習 fetch api 即可,如果遇到不靠譜面試官還在問 ajax 的事情,直接跟他講你對fetch的理解即可。

2.7. es5, es6。現(xiàn)在開發(fā)js大部分基于es5的,ie8以下通過es5-shim。但利用一些工具,現(xiàn)在已經(jīng)可以直接寫es6代碼了,尤其在reactjs,nodejs類型的項目中。對于從es5,es6每個階段js發(fā)生了哪些變化都需要系統(tǒng)學習,學習順序建議是 JavaScript基礎(chǔ) -> es5 -> es6,越靠前的越重要。一些參考鏈接:ECMAScript 5 compatibility tableECMAScript 6入門ES5 ? 張鑫旭

3. html5

需要了解html都提供了哪些api,然后項目中用起來。這部分沒有什么難理解的,關(guān)鍵在于能用html5解決業(yè)務(wù)問題,以及不支持html5的瀏覽器的降級方案。這部分體現(xiàn)了前端的一個思想:面向未來編程,盡早將新技術(shù)引入業(yè)務(wù)中來,而不是過分考慮兼容性問題,進而導致面向過去編程。


四、中級

初級階段的目標是能寫出可以運行頁面。中級階段的目標則是以更快的速度,寫出體驗更好的頁面。

1. 高內(nèi)聚、低耦合

如果說數(shù)據(jù)結(jié)構(gòu)和算法是從初級到高級的第一道門檻,能否寫出高內(nèi)聚、低耦合的代碼,則是第二道門檻。

這部分是《設(shè)計模式》課程的主要內(nèi)容,在《敏捷軟件開發(fā)-模式、原則與實戰(zhàn)》這部分書中也有更好解讀,這里只能簡單說下我的理解:

高內(nèi)聚和低耦合的核心是內(nèi)聚什么?解耦什么?簡單來說就是一個分類問題,展開來說分類的原則包括:變化的角度,未來可能變化和不太可能變化的代碼需要解耦;功能的角度,不同職能的代碼必須解耦。從變化的角度理解,對應(yīng)的原則包括:開放—封閉原則(OCP)、Liskov替換原則(LSP)、依賴倒置原則(DIP)、接口隔離原則(ISP);從功能的角度理解對應(yīng)的原則是:單一責任原則(SRP)。至于單例、工廠、模板、代理等等設(shè)計模式,只是這些原則之下的具體解決方案。

所以如果再有面試官去考察你的設(shè)計模式功底,要先去跟他講你對模式之上的原則的理解。具體的模式,在不通語言范式下的用法可能不同,甚至壓根沒用。但模式背后的原則,卻在哪都能用。

2. 極致的用戶體驗

在 webkit + v8 組合出現(xiàn)之后,瀏覽器的性能得到很大提升,以至于在多數(shù)場景下前端工程師都不會面臨的什么性能問題。這其實是從初級到中級的一道隱形的門檻,很多工作多年,由于工作場景的限制,接觸不到什么問題,自己也沒主動學習,導致在性能優(yōu)化維度一片空白。

遺憾的是業(yè)務(wù)在發(fā)展,為了更高的開發(fā)效率,前端工程和組件體系的復雜度也在提升。很多場景下,我們依然要面臨性能優(yōu)化的問題?!陡咝阅躩avascript》依然是這個領(lǐng)域的經(jīng)典,部分過時內(nèi)容(第五章,字符串和數(shù)組相關(guān)操作,V8已經(jīng)做優(yōu)化;第九章,構(gòu)建部分,現(xiàn)在基于webpack已經(jīng)有很成熟的方案了;第十章工具不用看,直接去看chrome的devtool文檔)自己忽略一下即可。

總結(jié)一下:對于前端頁面極致的用戶體驗圍繞這三方面:加載體驗、渲染體驗、操作體驗。千萬不可以只知道優(yōu)化加載體驗,5G時代即將來臨,網(wǎng)絡(luò)速度回得到進一步提升,但CPU處理速度,貌似還沒看到突破性進展,未來的用戶體驗問題,會更加聚焦到渲染體驗和操作體驗。

3. 工程效率

前端項目同樣面臨軟件生命周期的各個環(huán)節(jié),首先是代碼管理,你必須學會使用git。其次是代碼的構(gòu)建,如今前端代碼構(gòu)建已經(jīng)不是簡單的壓縮一下了,需要進行依賴管理、模塊合并、各種編譯,必須要學會使用webpack、rollup等前端構(gòu)建工具,以及前端模塊管理的方式,amd,cmd,es6 module 等等。


五、高級

從初級、到中級是可以根據(jù)教程(比如本文)或者參加培訓而快速達到的。但進入高級只能靠自己,就算你找到一個“高級前端研修班”,學到了高級前端的技巧,也學不到靈魂。這里只提供一個前端知識結(jié)構(gòu),僅供進一步學習的同學參考:JacksonTian/fks · GitHub


*文章內(nèi)容和圖片均來源于網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系刪除。

查看剩余內(nèi)容
loading
Hi,我是教育寶平臺顧問 添加我的微信,在查找或下載資料時,有任何問題,我會隨時為您解決~
loading
掃描二維碼 添加顧問微信

點贊

收藏

喜歡此內(nèi)容的人還喜歡
  1. 本分析涵蓋重慶3家Web前端開發(fā)培訓機構(gòu)——重慶博為峰(分層教學+就業(yè)指導)、重慶達內(nèi)教育(OMO模式+120萬學員積累)、重慶蝸牛學苑(AI+鴻蒙前端+實戰(zhàn)項目),從特色、課程、師資等維度拆解機構(gòu)實戰(zhàn)能力,為2027/2028年考生提供選校參考。
    攻略
    #前端開發(fā)
  2. 本盤點總計涉及5家沈陽Web前端開發(fā)培訓機構(gòu),包括沈陽達內(nèi)教育、沈陽迪派晟開培訓、沈陽吉大教育、沈陽中軟卓越IT培訓、沈陽叩丁狼教育等。本盤點基于教育寶(中國知名的第三方平臺)的信息和數(shù)據(jù),為2027或2028年想要學習Web前端開發(fā)的考生提供參考。
    攻略
    #前端開發(fā)
  3. 本分析涉及濟南web前端開發(fā)培訓領(lǐng)域4家機構(gòu),涵蓋濟南博為峰(老牌機構(gòu),分層教學+就業(yè)指導)、濟南達內(nèi)教育(零基礎(chǔ)教學,小班授課)、漢碼未來(5人小班,提前1月預定+免費住宿)、華盟信安學校(24H答疑,傳統(tǒng)面授+隨到隨學)等機構(gòu)。
    攻略
    #前端開發(fā)
  4. 前端行業(yè),目前仍是處在發(fā)展上升期的。
    就業(yè)
    # 前端開發(fā) # IT培訓
  5. 這個網(wǎng)站給我們提供了很多的配色方案
    攻略
    # 前端開發(fā) # IT培訓
  6. 前端開發(fā)是創(chuàng)建Web頁面或app等前端界面呈現(xiàn)給用戶的過程
    科普
    # 前端開發(fā) # IT培訓
教育寶IT技術(shù)頻道
教育寶致力于打造中國最專業(yè)的IT技術(shù)學習平臺,為IT技術(shù)學員、教育機構(gòu)、從業(yè)者和上下游搭建連接、互動、交流和賦能平臺。