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

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

2021-12-09 11:29:47
# 前端開發(fā) # IT培訓(xùn)



一、前端通用學(xué)習(xí)方法

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


二、基礎(chǔ)

html + css

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

javascript

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

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

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

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

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


三、初級(jí)

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

1. css

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

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

2. javascript

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

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

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

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

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

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

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

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

3. html5

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


四、中級(jí)

初級(jí)階段的目標(biāo)是能寫出可以運(yùn)行頁面。中級(jí)階段的目標(biāo)則是以更快的速度,寫出體驗(yàn)更好的頁面。

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

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

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

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

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

2. 的用戶體驗(yàn)

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

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

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

3. 工程效率

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


五、高級(jí)

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


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

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

點(diǎn)贊

收藏

資深學(xué)習(xí)規(guī)劃師,免費(fèi)幫您答疑解惑,定制學(xué)習(xí)方案
限時(shí)免費(fèi)咨詢
喜歡此內(nèi)容的人還喜歡
  1. web前端培訓(xùn)學(xué)習(xí)有要求嗎?
    攻略
    # IT技術(shù)培訓(xùn) # web前端培訓(xùn)
  2. 移動(dòng)web前端開發(fā)應(yīng)該具備哪些技能?
    攻略
    # IT技術(shù) # web前端
  3. 前端學(xué)出來之后可以從事的崗位
    攻略
    # IT技術(shù)培訓(xùn) # Web前端開發(fā)
  4. 前端行業(yè),目前仍是處在發(fā)展上升期的。
    就業(yè)
    # 前端開發(fā) # IT培訓(xùn)
  5. 這個(gè)網(wǎng)站給我們提供了很多的配色方案
    攻略
    # 前端開發(fā) # IT培訓(xùn)
  6. 前端開發(fā)是創(chuàng)建Web頁面或app等前端界面呈現(xiàn)給用戶的過程
    科普
    # 前端開發(fā) # IT培訓(xùn)
相關(guān)課程 更多
教育寶IT技術(shù)頻道
教育寶致力于打造中國最專業(yè)的IT技術(shù)學(xué)習(xí)平臺(tái),為IT技術(shù)學(xué)員、教育機(jī)構(gòu)、從業(yè)者和上下游搭建連接、互動(dòng)、交流和賦能平臺(tái)。