前端自學路線之 JavaScript 篇

2020-12-17 開源中國

今天來聊聊前端工程師的核心技能之——JavaScript。js這門語言看似簡單,但要做到入門、熟練以至於架構的程度,還是有一段路要走的,今天就來聊聊這段路上都要經歷些什麼。準備好小板凳,開講~

level 1

首先你要對js的基礎知識進行系統的學習,腦海中先有一幅知識藍圖。我們現在說的js其實包含三部分:ECMAScript規範、DOM規範、BOM規範,你要知道這三部分都有哪些內容。其中ECMA規範定義了js作為一門程式語言的標準,包含變量基本類型、對象、函數、作用域、運算符、流程控制語句等。DOM規範則規定了js如何與網頁進行交互,包括訪問與操作DOM節點、不同類型的節點都有哪些特性和方法、事件的監聽與傳播等。BOM規範定義了js如何與瀏覽器進行交互,包含window對象、location對象、navigator對象、history對象等。

基礎知識的學習最好就是看書了,像犀牛書、蝴蝶書、高程,都是經典的教材。

當你掌握了以上基礎知識的時候,差不多能寫出像彈出、移動、刪除節點等動效,你體會到了所謂交互其實就是用DOM操作來模擬出各種「假象」。這個時候你會開始接觸jquery,或許接觸的還更早一些。你開始逐個嘗試jquery封裝好的各個API,發現用jquery書寫代碼確實簡單了很多。jquery的學習和原生js的學習其實也沒必要有嚴格的先後順序,我一開始也是穿插的來學的。你只要清楚哪些是js的內容,哪些是jquery給你包裝出來的快捷方法就行。

嘗到jquery的甜頭之後,你會發現一個大寶藏,那就是jquery插件。你要用到的各種組件網上基本上都有現成的,你開始在網上扒一些插件下來,自己連猜帶蒙改改代碼,改出一個自己能用的版本。你這個時候也會開始用jquery-ui,這一套比較完善的插件庫,能解決你很多需求。

這就是第一階段,你對js有了一個基本了解,自己摸索著能改改別人插件,差不多能寫出一個完整的「玩具頁面」了。

level 2

在上面的基礎上寫了一段時間代碼後,你會感覺到自己的調試效率很低。具體表現為,你寫的代碼有時候總是運行不出自己想要的結果,代碼報錯了你卻怎麼調也調不對。這時候你就要對js進行更深一輪的理解了,你要對js中的一些概念做到真正的理解,比如作用域鏈、原型、閉包。比如你要知道js運算的自動轉化機制,為什麼2+「1」是string,而2-「1」是number。typeof和typeof()前者是操作符後者是內置函數。如何判斷一個變量是否是數組,等等這些細節問題,都是有對應的概念和原理能解釋的,你要做到知其所以然。

這個階段你會開始與服務端進行交互了,原生的ajax要理解並能手寫,jquery的ajax要熟練使用。你會遇到ajax的跨域問題,開始掌握髮送跨域請求,知道JSONP是個什麼東西,從原理上。

在改了無數別人的插件後,你需要開始自己動手寫一個jquery插件了,因為別人的難免有坑,自己寫的才最可控。另外對於自己的邏輯和代碼組織能力也是一個鍛鍊。自己嘗試寫插件吧,從簡單到複雜。比如一個彈框插件,要具備可以配置寬高、標題、內容、回調函數等功能。或者是一個焦點圖滑動插件,不要看別人的代碼,自己完全從頭開始構思。

當你能理解jquery的插件機制,並能自己寫出項目所需的插件時,你的js水平又上了一個等級。做到以上這些,你基本可以應付一個項目的前端需求了。也就是說,你寫出來的頁面不再是玩具了,可以上線使用了。

level 3

接下來你應該開始接觸一些更複雜的系統了,就是所謂的「富客戶端」,前端代碼量上了一個檔次,一個js文件動輒成白上千行。你會發現js代碼還像以前那樣從上往下堆著,太亂了。你寫的ajax返回的數據越來越複雜,用拼字符串的方式進行局部更新太費力了。

這個時候你會開始用前端模板引擎來進行局部更新,比如handlebars、artTemplate等等。你需要熟練使用他們,並嘗試去理解這些模板引擎的運行機制。

然後你要開始使用mvc模式來組織你日益複雜的代碼了,典型的框架就是backbone。但是backbone現在已經過時了,雖然用的不多了,但如果你還是新手,起碼去了解一些它的思維,知道用邏輯層次來劃分代碼結構是怎麼個搞法。知道前端路由是個什麼機制。

到了這個階段,你已經告別了原先的純「刀耕火種」時代了,你開始使用各種框架來幫助你更好的完成功能。

level 3 plus

為什麼有個3 plus階段呢?因為你此時需要進行的是一個橫向的擴展,js的學習本來就是一個縱橫交叉的網絡嘛。

此時是學習HTML5的最佳時機,一方面你對js的基礎知識有了一定的儲備,另一方面你也可能開始接觸移動端的頁面了。

HTML5新增的標籤倒是小菜一碟,像<header>、<footer>、<section>、<video>之類的你在之前也多多少少接觸了。更多的內容在HTML5新增的js API這塊。比如新增的File API,localStorage/sessionStorage、canvas API、histroy的擴展,xhr的擴展等等。這些在移動端都是可以放心使用的,需要你對這些新特性一一學習。

你也應該在這個階段嘗試移動端的頁面,了解它與PC頁面開發的不同點。比如你應該在移動端拋棄jquery,開始使用zepto。了解touch事件,了解移動端click 300毫秒延遲的問題並找到解決方法。嘗試寫移動端的組件,如無限滾動、左右滑動插件,並解決移動端的性能問題。在網上找找司徒正美、張代平、葉小釵等總結的移動端兼容問題的解決方案等等。

總之,在這個階段,你要能拿得下移動端頁面的開發,並熟練使用HTML5的新特性。

level 4

經歷了上面階段,你的單兵作戰能力已經算可以了。這個時候你會面臨團隊協作以及模塊化開發。這個時候你就有必要了解模塊化的規範了。你需要了解commonjs、AMD、CMD都是包含哪些內容,他們是什麼關係,有哪些區別。

你起碼得使用一下requirejs,知道老牌經典AMD模塊化工具是個什麼思維,解決了哪些開發中的痛點。seajs你也需要了解,知道seajs對AMD進行了哪些改進和包容。最後,你得知道commonjs規範是如何藉助打包工具(browserify、webpack)一統天下,通吃服務端(nodejs)以及瀏覽器端的。

模塊化開發與打包是分不開的,這個階段,你也應該自己嘗試使用grunt、gulp、webpack對項目進行構建和打包。儘管grunt已經沒落,眼看未來是webpack的天下。

level 5

上面幾個階段的內容,其實已經是三年前乃至更早時候的東西了。在這個階段,你才真正與時代接軌了。那就是mvvm。

你應該首先了解mvvm模式的開發思想,它是如何用雙向綁定的方式來解脫我們的DOM操作,又是如何用組件化的思維來更好組織我們的代碼。

老牌的mvvm框架如ember、knockout,你估計能用上的概率不高了。但是從2013年開始火起來的avalon和angular你起碼得用一個。做到能用mvvm架起一個項目的程度。關於angular我曾經寫過一個系列的文章,有興趣的同學可以在我博客搜索,或者百度關鍵字「走近angularjs」。

最新也是目前最火的vuejs你可以得開始了解,它面向未來,只兼容高級瀏覽器,性能極佳而且API極簡,是移動端mvvm方案的不二選擇。

學習mvvm,會對你的開發習慣和開發思維進行一次轉變,相對於jquery時代。可能一開始會不習慣,但這個轉變是你必須經歷的,因為,它會變成你未來學習其他框架的基石。

level 6

在與時代接上軌之後,你還不能停,還得更近一步。因為未來已經離我們很近了。沒錯,我說的就是ES2015。ES2015,乳名ES6,已於去年發布正式版,雖然瀏覽器的支持程度還在慢慢完善,但是我們現在使用babel進行編譯後,已經完全可以工作了。

所以你現在就應該開始了解並使用ES6了。事實上,我們項目組也是今年才開始使用ES6的,對於新特性,越早上手肯定是越好,畢竟還需要一定時間的熟悉,以及開發模式的架構。

另外一塊新技術就是React,以及React Native、淘寶weex這樣的混合app開發框架。這又是一套全新的開發理念,在未來兩三年也必定會佔領越來越多的份額,所以,他們的學習也是不能落下的。其實在我們公司,目前還未開始React的使用,我相信在不久後的某個時間節點,也就自然上場了。

到了這個階段,js方面的主流知識和框架,你也已經掌握的差不多了。其實這個時候也就不需要我來指點學習路線了,因為你到了這個階段,自然也就明白了行業的發展趨勢,能夠自己把控該學什麼該用什麼了。

level 7

源碼深度研究以及研發框架。應該明白是什麼意思了哈。因為我自己目前也還不到這個階段,所以也就不誤人子弟了。放在這裡,當作奮鬥目標好了。

今天要說的就這麼多了,這差不多也是我這幾年的學習路線,基本和行業發展的進度吻合。但這也只是一條主線而已,前端領域的知識是網狀的,這中間又會穿插各種大小知識,需要在學習的過程中點滴積累了。

出處:微信公眾平臺: 醫小生與程序猿  作者: 呂大豹

相關焦點

  • 我是如何從零開始 Web 前端自學之路的?
    最後的機緣巧合下,走上了前端開發之路,作為一個非計算機專業且低學歷的人來說,自學編程其實不是件容易的事情,不過慶幸的是自己堅持下來了。目前工作還算不錯,收入在目前所在的城市不算高,不算低,生活也還過得去,繼續加油努力,也希望自己在今後更上一層。從 2016 年下半年開始,我真正接觸前端,到現在 2 年多的時間。
  • 萬人血書的前端開發自學資料,俺肝出來了!
    寫在前面之前就有不少小夥伴提需求說:以後想從事前端開發崗,能不能整理一波前端開發的自學資料+書籍,正好得空,這個事情還是先安排了吧!正好不久之前,咱們這裡也詳細梳理過「前端開發的學習路線和知識點」,具體可參看這篇文章:《前端開發學習路線+知識點梳理》之前繪製的詳細學習思維導圖,這裡也再貼一下:本篇我們就對照著這個知識腦圖,再來梳理一下學習時具體可用的
  • 從零開始學習web前端技術路線圖
    最後,建議考研,或者學一下前端技術。程式設計師分前後端,後端有c,java,.net等後端語言支撐,競爭比較激烈。前端入門比較容易,只要按照以下學習路線,持續輸入,成長還是很快的。下面我介紹一下,小白從零開始學習web前端技術路線圖,文章比較長,主要是我對過往學習路線的總結,建議看完收藏,需要的時候用pc打開學習:前言首先,自學是件很苦的事情,學習本身就是件反人性的過程,更何況在一個從零開始的全新領域獨自奮鬥,這裡不是要打擊你
  • 自學軟體開發少走彎路的學路線和推薦書籍,滿滿乾貨
    敲黑板與其說這是給想自學軟體開發小夥伴梳理的自學路線,還不如說這是一篇軟體開發行業的技術路線整理合集。除了幫助小白自學,也可以幫助正在進步或者迷失方向的軟體工程師繼續向前。整個自學路線我會不斷完善,目的就是讓大家少走彎路,建議自學軟體開發的小夥伴關注我,不迷路。
  • Javascript 性能測試 [每日前端夜話0xB1]
    每日前端夜話,陪你聊前端。每天晚上18:00準時推送。
  • 前端程式設計師學到JavaScript選擇了放棄,這4條經驗值得一看!
    HTML、CSS、JavaScript被稱為前端三劍客。其中,HTML、CSS比較容易,JavaScript屬於較難的一部分。瀏覽器根據javascript的指令,能夠操作HTML和CSS。1、前端學習路線關於前端學習路線可以從HTML到CSS到JavaScript,最好是循序漸進,如果你一會兒學html,一會兒又學CSS,這樣學習你會感覺很凌亂。
  • 前端新手教程!如何快速入門web前端
    所以這篇文章我想分享一些初學者應該怎麼學web,怎麼入門的個人經驗。心態和個人的一些學習方法先說心態問題,經常看到網上很多說前端容易,所以想來學習的。其實,目前隨著前後端分離,前端也逐漸趨向工程化,並不是嵌套在後端項目中寫寫htmlcss就可以的了,需要學習的東西也越來越多。
  • 七天學會javascript第一天javascript介紹
    前幾周寫了幾篇關於入門php的文章,反響還不錯,之前簡單的提到了JavaScript,這周小編重點介紹JavaScript讓大家可以在一周時間內掌握這門前端語言的基本用法。javascript介紹javascript數據類型javascript運算符javascript對象javascript
  • 最新web前端學習路線
    下面的思維導圖是在網際網路上廣泛傳播的前端學習地圖。許多初學者說,當他們看到這些密集的知識點時會感到頭暈目眩。事實上,前端是一個寬泛的主題。但你需要學習前端你不必驚慌,雖然內容比較多,但不是沒有規律可循,只要一步一步地不怕學習不好的前端!那麼前端開發到底需要學習些什麼呢?我應該怎樣學習?
  • 前端:用javascript實現一個轉盤小遊戲?
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫本文主要介紹如何使用原生javascript和Css3來實現一個在各大移動應用中經常出現的轉盤遊戲,由於改實現可以有不同方式,如果熟悉canvas的話也可以用canvas實現,本文採用js和css實現主要考慮到複雜度較小性能較好
  • 2020 年前端面試複習必讀文章【超三百篇】
    : https://medium.com/javascript-scene/master-the-javascript-interview-what-is-functional-programming-7f218c68b3a0[60]簡明 JavaScript 函數式編程——入門篇: https://juejin.im/post/5d70e25de51d453c11684cc4
  • 12 個 GitHub 上超火的 JavaScript 奇技淫巧項目,找到寫 JavaScript 的靈感!
    公眾號:前端GitHub,專注於挖掘 GitHub 上優秀的前端開源項目,並以專題的形式推薦,每專題大概 10 個好項目,每周會有一到三篇精華文章推送。已經推薦了 面試項目、css奇技淫巧項目、代碼規範項目、數據結構與算法項目、管理後臺模板、前端必備在線工具 等專題的近 100 個優秀項目了。
  • javascript之常用數據類型及判斷方法
    前端工作者學習之路對於剛開始入門的前端人員來說,javascript中的數據類型是既熟悉又籠統的概念,不論在php,還是c語言抑或java,他們的數據類型都各不相同,大家也千萬不用混淆,今天,我們來具體重新了解下javascript中的常見數據類型以及他們的判斷方法。
  • 我是怎樣自學web前端,在二線城市收穫8K薪資的?
    我是怎樣自學web前端,在二線城市收穫8K薪資的?沒有老師的輔導,不清晰的技術成長路線,只能獨自待在一個小屋裡,對著各種渠道下載的盜版視頻跟著敲,經常會敲著敲著心生厭煩,仿佛心中長了蟲子一般,坐立難安,根本就不可能學的進去,自學需要強大的自我約束能力,以及超強的自我學習能力,別看網上那麼多人主張自學,在家看視頻看書云云,其實這種人最後都克服不了自己,跑去找培訓班上了。
  • 聚焦前端各技術領域 大知識圖譜全面亮相
    (如果沒找到您所需要的,歡迎向我們反饋,我們不會讓您等太久>>http://geek.csdn.net/news/detail/80706)今天我們先從前端開發領域著手,看看前端開發者可以在這裡得到什麼?
  • 前端Hack之XSS攻擊個人學習筆記
    本文作者:Yunen此篇系本人兩周來學習舉個簡單的例子(來自《Web 前端黑客技術揭秘》):<html>...這是由於在 javascript 中只會將;作為語句的終止符,當瀏覽器引擎解析 javascript 腳本時沒有匹配到;便會繼續處理,知道發現下個分號為止,而換行符並不是終止符。
  • 2021年最新整理web前端學習路線(內附學習教程視頻連結)
    本學習路線包含了千鋒教育web前端學科全階段視頻教程(從入門到精通),涵蓋了你所需要掌握的所有前沿技術及知識點!
  • 2020Python+人工智慧學習路線圖,內附完整自學路線+視頻+工具經驗+面試篇
    三、Python學習路線圖—工具篇工具篇-Python編程相關軟體安裝教學環境參考文檔關注「黑馬程式設計師視頻庫」,後臺回復「Python學習路線」免費獲取。初次接觸python應該如何系統的自學?初學者學習Python的整體規劃與建議初學python用什麼編輯器好?黑馬與其他培訓機構比,有哪些優勢沒有基礎應該怎麼學沒接觸過電腦,能不能學會python啊?
  • 如何使用JavaScript實現前端導入和導出excel文件
    使用JavaScript實現前端導入excel文件並自動生成可編輯的Table組件在開始實現之前, 我們先來看看實現效果.由於我們採用antd的table組件來渲染數據, 所以我們需要手動將解析出來的數據轉換成table支持的數據格式.大致流程如下: 所以我們需要做的就是將Upload得到的文件數據傳給xlsx, 由xlsx生成解析對象, 最後我們利用javascript算法將xlsx的對象處理成ant-table支持的數據格式即可.
  • 26自學轉行前端(寫給和1年前一樣迷茫的我的你)
    (抱歉,我是自學的,對於培訓,下文不發表任何觀點)3、如何高效學習,多久能找到工作?4、非科班會不會沒發展?年齡大會不會被淘汰?5、前端和後端哪個好?上手?發展前景?本人一般本科-電子信息專業,大學唯一學過與前端有一丟丟關係的課程,算是C語言吧(if、for這些語法和js接近)畢業後從事了近3年環保方面的工作,17年開始自學並轉行,是一個不折不扣的非科班大齡零基礎程序猿,不僅離開了自學的天堂(學校),而且已婚已育,常言道進入社會工作了就學不進去了,別說還有了家庭和孩子,對此我有一些不同的看法: