Normalize.css 中文文檔與源碼解讀
Normalize-zh.css 是根據(jù)對 Normalize.css 的源碼分析后窒所,經(jīng)過學(xué)習(xí)與整理帆锋,將源代碼中的英文注釋文檔翻譯為中文版本,方便國內(nèi)的開發(fā)者學(xué)習(xí)和使用锯厢。
逐行閱讀 Bootstrap 源碼
Bootstrap 是我接觸前端開發(fā)時學(xué)習(xí)的第一個 CSS 框架实辑,也是第一個完整看完文檔的開源項目。在正式和非正式項目中多次使用 Bootstrap v3剪撬,也基本了解了 Bootstrap 的優(yōu)缺點、如何定制 Bootstrap 等“高階玩法”馍佑。
在自學(xué)前端開發(fā)的兩年余時間里梨水,裸寫 CSS 代碼時總能遇到一些沒有見過的“古怪” CSS 語句和樣式,而在使用 Bootstrap 時并不會出現(xiàn)此類問題舅世,遂決定閱讀 Bootstrap 項目中 CSS 部分的源碼奇徒,看看到底是什么在“擾亂”開發(fā)者的視線,而 Bootstrap 為開發(fā)者提高效率做了哪些有趣的事情逼龟。
Underscore.js 源碼解讀 & 系列文章
閱讀一些著名框架類庫的源碼腺律,就好像和一個個大師對話,你會學(xué)到很多匀钧。為什么是 Underscore?最主要的原因是 Underscore 簡短精悍(約 1.5k 行)日杈,封裝了 100 多個有用的方法,耦合度低莉擒,非常適合逐個方法閱讀,適合樓主這樣的 JavaScript 初學(xué)者填硕。從中鹿鳖,你不僅可以學(xué)到用 void 0 代替 undefined 避免 undefined 被重寫等一些小技巧 ,也可以學(xué)到變量類型判斷姻檀、函數(shù)節(jié)流&函數(shù)去抖等常用的方法涝滴,還可以學(xué)到很多瀏覽器兼容的 hack,更可以學(xué)到作者的整體設(shè)計思路以及 API 設(shè)計的原理狭莱。
undersercore 源碼分析
起初腋妙,我分析 underscore 的源碼只是想更深入的了解 函數(shù)式編程(Functional Programming),但分析結(jié)束后骤素,我就覺得單純的源碼注釋不足以記錄我的收獲、理解和感悟痕檬,所以我想把這些寫下來送浊,我粗略地將寫作意圖概括如下:
函數(shù)式編程近些年非常火爆唁桩,諸如 haskwell 這樣的純函數(shù)式編程語言獲得了非常高的社區(qū)活躍度耸棒。JavaScript 支持多范式編程,拋開 underscore 和 lodash 這樣的生來為了函數(shù)編程的庫不談与殃,諸如 redux 這樣的庫也大量運用了函數(shù)式編程,即便作為一個 react+redux 的業(yè)務(wù)開發(fā)者,想要深入理解的 redux 的實現(xiàn)機(jī)制,也不得不學(xué)習(xí)函數(shù)式編程。因此,學(xué)習(xí)函數(shù)式編程窘俺,將會成為 JavaScript 開發(fā)者的必須。
在閱讀 underscore 的源碼期間赦邻,被作者 jashkenas(他同時也是 backbone 和 coffee 的作者)的功力深深折服,一些功能可能我也能寫出,但絕對寫不了如此健壯铐料。所以,深入學(xué)習(xí) underscore 源碼,不僅有助于我們認(rèn)識函數(shù)式編程绑警,也能深化我們對于 JavaScript 中一些基礎(chǔ)知識的理解和掌握计盒。
隨著 backbone 的衰落和 lodash 的崛起北启,underscore 的熱度已經(jīng)不及當(dāng)年,但是截止這篇文章的開始前的一個月懈涛,underscore 仍然有最新的 bug 修復(fù),可見作者 jashkenas 仍然沒有放棄 underscore 的維護(hù)埋心。所以現(xiàn)在分析 underscore 的源碼仍然不顯得過時拷呆。相較于 lodash,underscore 的源碼更加短小,也不太涉及 JavaScript 中的一些奇淫巧技伙狐,所以艘虎,分析 underscore 更加適合 JavaScript 開發(fā)者的進(jìn)階属划。在完成了 underscore 的源碼分析后绽昼,希望我自己有時間,也希望讀者有意愿再去分析 lodash 的源碼,后者在性能和功能上都已經(jīng)超越了 underscore大莫,并且長時間霸占了 npm 了最熱 package 的位置官份。
jQuery- v1.10.2 源碼解讀
jQuery 源碼有些方法的實現(xiàn)特別長且繁瑣烙丛,因為 jQuery 本身作為一個通用性特別強(qiáng)的框架河咽,
一個方法兼容了許多情況飒房,也允許用戶傳入各種不同的參數(shù)媚值,導(dǎo)致內(nèi)部處理的邏輯十分復(fù)雜褥芒,
所以當(dāng)解讀一個方法的時候感覺到了明顯的困難,嘗試著跳出卡殼的那段代碼本身献酗,
站在更高的維度去思考這些復(fù)雜的邏輯是為了處理或兼容什么坷牛,為什么要這樣寫京闰,一定會有不一樣的收獲
其次甩苛,也是因為這個原因,jQuery 源碼存在許多兼容低版本的 HACK 或者邏輯十分晦澀繁瑣的代碼片段
瀏覽器兼容這樣的大坑極其容易讓一個前端工程師不能學(xué)到編程的精髓
所以不要太執(zhí)著于一些邊角料反浓,即使兼容性很重要辆雾,也應(yīng)該適度學(xué)習(xí)理解月劈,適可而止
jQuery v3.1.1 源碼解讀
我雖然接觸 jQuery 很久了,但也只是局限于表面使用的層次腊凶,碰到一些問題拴念,找到 jQuery 的解決辦法,然后使用政鼠。顯然缔俄,這種做法的弊端就是,無論你怎么學(xué)俐载,都只能是個小白。
當(dāng)我建立這個項目的時候挖炬,就表示状婶,我要改變這一切了馅巷,做一些人想做草姻,憧憬去做,但從沒踏入第一步的事情敞曹,學(xué)習(xí) jQuery 源碼综膀。
到目前為止,jQuery 的貢獻(xiàn)者團(tuán)隊共 256 名成員橄登,6000 多條 commits讥此,可想而知,jQuery 是一個多么龐大的項目面褐。jQuery 官方的版本目前是 v3.1.1取胎,已經(jīng)衍生出 jQueryUI湃窍、jQueryMobile 等多個項目。
雖然我在前端爬摸打滾一年多觉痛,自認(rèn)基礎(chǔ)不是很好茵休,在沒有外界幫助的情況下,直接閱讀項目源碼太難了俐芯,所以在邊參考遍實踐的過程中寫下來這個項目钉鸯。
更多 jQuery 源碼分析
backbone源碼解讀
backbone是我兩年多前入門前端的時候接觸到的第一個框架,當(dāng)初被backbone的強(qiáng)大功能所吸引(當(dāng)然的確比裸寫js要好得多)贸营,雖然現(xiàn)在backbone并不算最主流的前端框架了,但是钞脂,它里面大量設(shè)計模式的靈活運用冰啃,以及令人贊嘆的處理技巧,還是非常值得學(xué)習(xí)亿笤。個人認(rèn)為,讀懂老牌框架的源代碼比會用流行框架的API要有用的多汪榔。
另外肃拜,backbone的源代碼最近也改了許多(特別是針對ES6),所以有些老舊的分析士聪,可能會和現(xiàn)在的源代碼有些出入猛蔽。
vue成長系列文章
從源碼的角度看vue的成長歷程。
Vuex 源碼解析
上一篇文章說的是如何閱讀框架源代碼区岗,收到了“如果更詳細(xì)一點就好了”的反饋毁枯,不如就以 Vuex 為切入點進(jìn)行一次實踐吧,不矯揉不造作藐鹤,說走咱就走~~
Vuex框架原理與源碼分析
Vuex是一個專為Vue服務(wù)赂韵,用于管理頁面數(shù)據(jù)狀態(tài)、提供統(tǒng)一數(shù)據(jù)操作的生態(tài)系統(tǒng)括堤。它集中于MVC模式中的Model層,規(guī)定所有的數(shù)據(jù)操作必須通過 action - mutation - state change 的流程來進(jìn)行讥电,再結(jié)合Vue的數(shù)據(jù)視圖雙向綁定特性來實現(xiàn)頁面的展示更新轧抗。統(tǒng)一的頁面狀態(tài)管理以及操作處理,可以讓復(fù)雜的組件交互變得簡單清晰纠炮,同時可在調(diào)試模式下進(jìn)行時光機(jī)般的倒退前進(jìn)操作灯蝴,查看數(shù)據(jù)改變過程,使code debug更加方便耕肩。
最近在開發(fā)的項目中用到了Vuex來管理整體頁面狀態(tài)问潭,遇到了很多問題。決定研究下源碼梳虽,在答疑解惑之外灾茁,能深入學(xué)習(xí)其實現(xiàn)原理。
vue-router 源碼分析-整體流程
在前端框架 React竖螃、Vue.js 和 Angular 三足鼎立的年代, Vue.js 因其易用逗余、易學(xué)季惩、學(xué)習(xí)成本低等特點已經(jīng)成為了廣大前端er的新寵, 而其對應(yīng)的路由 vue-router 也是簡單好用, 功能強(qiáng)大. 本文將結(jié)合 Vue.js 來分析 vue-router 的整體流程.
從vue-cli源碼學(xué)習(xí)如何寫模板
vue-cli 是 vuejs 官方提供的基于 vuejs 的項目腳手架工具, 可以很快的幫助 vuejs 開發(fā)者搭建一個 startup 項目, 免去環(huán)境配置的繁瑣, 開箱即用. 今天就來看下 vue-cli 的實現(xiàn).
redux 源碼解讀
redux并不局限于flux與react。redux 自身保持簡潔以便適配各種場景啥繁,讓社區(qū)發(fā)展出各種 redux-* 中間件或者插件青抛,從而形成它自己的生態(tài)系統(tǒng)。
Redux 源碼解讀(長文慎入)
Redux 的源碼非常的精煉适室,短短幾百行代碼,去提供了強(qiáng)大的功能蔬螟。
MobX 核心源碼解析
深入 MobX 源碼來解析其核心原理以及工作流程汽畴。