前言
在閱讀這本書之前,不知道大家有沒有思考過一個問題:
前端學習到底有沒有捷徑?
在我看來,學習的捷徑并不是指不用付出多少努力就能夠獲得成功,而是在我們付出努力之后,能夠感覺到自己的努力沒有白費,能夠學到更多的知識,能夠真正做到一分耕耘,一分收獲。
所以學習有沒有捷徑?我的答案是:一定有。
其實大多數人并不是不想付出努力,而是不知道如何去努力,不知道如何有效地努力。我們想要學好一個知識,想要掌握一門技術,但是往往不知從何下手。
前端的學習也是如此。也許上手簡單的HTML/CSS 知識,會給剛開始學習的讀者一個掌握
起來很容易的印象。但是整個前端知識體系繁雜而龐大,導致大多數人在掌握了一些知識之后,仍然覺得自己并沒有真正入門,特別是近幾年,前端行業的從業人員所要掌握的知識越來越龐雜,入門的門檻也越來越高,甚至進階道路也變成了一場馬拉松。
也許在幾年以前,我們只需會用jQuery 就可以說自己是一名合格的前端開發者,但是現在
的JavaScript 語言已經不再是幾年前那樣,只需處理一些簡單的邏輯就足夠了。隨著前后端分離的方式被越來越多的團隊運用于實踐,用戶對UI 的要求越來越高,對性能的要求也越來越高,JavaScript 承載了更多的任務。雖然前端行業大熱,但是我們的學習壓力也隨之倍增。
所以我一直在思考,在這樣的大環境背景下,對于新人朋友來說,什么樣的學習方式能讓我們的學習效率更高?或者說,一本什么樣的前端書籍才算是好書?
是將所有的前端知識按部就班地羅列出來告訴大家嗎?肯定不是。
很多書籍,以及各類官方文檔其實都在做這件事。但是對于多數讀者來說,把所有知識羅列出來擺在眼前,并不是一個能夠掌握它們的有效方式。這種學習方法不僅效率低下,而且學完之后,也并不知道在實踐中到底如何使用它們,我們其實是迷茫的。
所以,如果有一本書,它在努力地向讀者傳遞一種行之有效的學習方法,那么對于適合這種學習方法的讀者來說,就一定是一本好書。
這就是我們這本書努力的方向。
憑借多年的工作經驗,在長期寫博客并與讀者互動的過程中,我總結出了一套適合大多數人的學習方式,那就是:
圍繞核心,漸進增強。
本書將整個JavaScript 相關的知識點簡單粗暴地劃分為核心知識與周邊知識。
周邊知識的特點就是相對獨立,不用非得學會了其他的知識點之后才能掌握它,也不用掌握了它之后才能學習其他的知識。例如Ajax,如果僅僅只是想要使用它,那么用別人封裝好的方法,通過官方文檔或者搜索引擎,只需要兩分鐘你就知道怎么使用。周邊知識不會成為我們學習的瓶頸。
而核心知識不一樣,核心知識是整個前端知識體系的骨架所在。它們前后依賴,環環相扣。
例如,在核心知識鏈中,如果你搞不清楚內存空間管理,你可能就不會真正明白閉包的原理,就沒辦法完全理解原型鏈,這是一個知識的遞進過程。我們在學習過程中遇到的瓶頸,往往都是由于某一個環節的核心知識沒有完整掌握造成的。而核心知識的另一個重要性就在于,它們能夠幫助我們更加輕松地掌握其余的周邊知識。
所以,如果讀者知道這條核心知識鏈到底是什么,并且徹底地掌握它們,那么你就已經具備了成為一名優秀前端程序員的能力。這樣的能力能夠讓你在學習其他知識點的時候方向明確,并且充滿底氣。
所以這本書的主要目的就在于幫助讀者擁有這樣的進階能力。
基于這個思路,這本書的呈現方式必定與其他圖書不同。本書不會按部就班地告訴你如何聲明變量、如何聲明函數,不會羅列出所有的基礎知識,對于基礎知識的傳授,《JavaScript 高級編程》已經做得足夠好,因此沒有必要重復做同樣的事情。我會一步一步與大家分享這條完整的核心鏈。我的期望是,當大家學完這本書中的知識后,能夠對前端開發的現狀有一個大致的了解,知道什么知識是最有用的,什么知識是工作中需要的,擁有進一步學習流行前端框架的能力,擁有在前端方向自主學習、自主進步的知識基礎與能力。
最后希望在這本書的陪伴下,大家能有一個愉快的、充實的學習歷程。