摘要:作者韓子遲不知不覺間,源碼解讀系列進(jìn)入了真正的尾聲,也請?jiān)试S我最后一次下項(xiàng)目的原始地址這半年以來,花費(fèi)了大量的業(yè)余時(shí)間,共計(jì)寫了篇隨筆包括此文,也給的源碼加了差不多行注釋,對于當(dāng)初說的要做史上最詳細(xì)的源碼剖析,至此我也覺得問心無愧。
作者:韓子遲
What?不知不覺間,「Underscore 源碼解讀系列」進(jìn)入了真正的尾聲,也請?jiān)试S我最后一次 po 下項(xiàng)目的原始地址 https://github.com/hanzichi/u...
這半年以來,花費(fèi)了大量的業(yè)余時(shí)間,共計(jì)寫了 25 篇隨筆(包括此文),也給 underscore-1.8.3 的源碼加了差不多 1500 行 注釋,對于當(dāng)初說的要做「史上最詳細(xì)的 underscore 源碼剖析」,至此我也覺得問心無愧。
本文不想說我在這個(gè)過程中學(xué)到了什么,學(xué)到的東西,能寫的都在前面 24 篇隨筆中了,只能意會(huì)的我也說不出來(感觸最深的是閉包的強(qiáng)大)。本文是一篇「水文」,不談技術(shù),拋開代碼,聽樓主扯扯淡。
Why Underscore?早期的幾篇隨筆都有「Why Underscore」這一節(jié):
閱讀一些著名框架類庫的源碼,就好像和一個(gè)個(gè)大師對話,你會(huì)學(xué)到很多。為什么是 Underscore?最主要的原因是 Underscore 簡短精悍(約 1.5k 行),封裝了 100 多個(gè)有用的方法,耦合度低,非常適合逐個(gè)方法閱讀,適合樓主這樣的 JavaScript 初學(xué)者。從中,你不僅可以學(xué)到用 void 0 代替 undefined 避免 undefined 被重寫等一些小技巧 ,也可以學(xué)到變量類型判斷、函數(shù)節(jié)流&函數(shù)去抖等常用的方法,還可以學(xué)到很多瀏覽器兼容的 hack,更可以學(xué)到作者的整體設(shè)計(jì)思路以及 API 設(shè)計(jì)的原理。
其實(shí)這并不是直接原因,「導(dǎo)火索」是當(dāng)時(shí)(三月末)學(xué)習(xí)函數(shù)節(jié)流和函數(shù)去抖的時(shí)候,發(fā)現(xiàn)很多文章混淆了這兩個(gè)概念,了解到 Underscore 封裝了這兩個(gè)函數(shù),但是一用卻發(fā)現(xiàn)了它的 BUG!(詳見 一次發(fā)現(xiàn)underscore源碼bug的經(jīng)歷以及對學(xué)術(shù)界『拿來主義』的思考 一文)
Underscore 早些年就接觸過,對其的了解也僅限于「一個(gè)輕巧的工具庫」,會(huì)不會(huì)還有其他的 BUG?同時(shí)源碼這么短(之前想過看 jQuery,被接近 1w 行嚇回來了),耦合度低(可以一個(gè)個(gè)方法分開看),也進(jìn)一步激發(fā)了通篇解讀的興趣,想著這一路下來肯定能學(xué)到不少東西。好東西要與大家分享,同時(shí)確定了寫系列文章的 idea。
Where to write?哪里寫?想都沒想就確定了主戰(zhàn)場 GitHub。之前我是不玩 GitHub 的,現(xiàn)在已經(jīng)離不開了,每天不刷個(gè)幾十次都手癢。為什么確定在 GitHub?理由很簡單,GitHub 有逼格啊(畢竟是全球最大的同性交友社區(qū))。
當(dāng)然,酒香也怕巷子深,寫完了沒人看無疑是對自信心的極大打擊,同時(shí)也需要大家來提出寶貴的意見。為此,幾乎每一篇完成后,都會(huì)在以下渠道分享:
開發(fā)者頭條
掘金
segmentfault 頭條
極客頭條
干貨集中營
其實(shí)主要就是前三個(gè),后面兩個(gè)用了一段時(shí)間感覺不大好就不用了。極客頭條個(gè)人感覺分類有點(diǎn)亂,同時(shí)因?yàn)槭?CSDN 旗下的,個(gè)人對 CSDN 沒太多好感;干貨集中營的話,維護(hù)者是「daimajia」大大,感覺移動(dòng)開發(fā)者關(guān)注的會(huì)比較多。
分享的話,如果臉皮厚的話,也可以在微博艾特一些圈內(nèi)大大們(樓主臉皮比較薄 ...)。
當(dāng)然,我不僅在 GitHub 的 issue 里寫,還在以下一些渠道寫:
博客園
segmentfault
伯樂在線
簡書
簡書的話,后面斷斷續(xù)續(xù)不更了,個(gè)人喜歡專門的 IT 類博客,而且覺得簡書的 Markdown 渲染有問題,為什么都說它的 Markdown 體驗(yàn)好 ... sf 和 伯樂在線 的話,閱讀量還是可以的,只是它們不是專門做博客系統(tǒng)的,基礎(chǔ)的分類歸檔功能都沒有(或許是我沒找到?),以后應(yīng)該還是會(huì)以博客園為主要戰(zhàn)場。
Then?underscore.js 的源碼解讀畫上了句號(hào),接下去干嘛?其實(shí)樓主對以下幾個(gè)庫也挺感興趣的。
lodash(Underscore 的完美替代品,據(jù)說效率比 Underscore 高好多)
underscore.string(Underscore.js 沒有為 String 擴(kuò)展方法)
underscore-contrib(Underscore-contrib 是一個(gè) Underscore 的代碼貢獻(xiàn)庫)
Underscore.php / API
underscore.php(Underscore.js 官網(wǎng) 推薦)
End那就這樣吧,749 Star / 140 Watch / 153 Fork 算是對我的肯定和鼓勵(lì)吧 ^_^
也許我韓子遲還會(huì)回來的!
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/88001.html
摘要:支持形式的調(diào)用這其實(shí)是非常經(jīng)典的無構(gòu)造,其實(shí)就是一個(gè)構(gòu)造函數(shù),的結(jié)果就是一個(gè)對象實(shí)例,該實(shí)例有個(gè)屬性,屬性值是。 前言 終于,樓主的「Underscore 源碼解讀系列」underscore-analysis 即將進(jìn)入尾聲,關(guān)注下 timeline 會(huì)發(fā)現(xiàn)樓主最近加快了解讀速度。十一月,多事之秋,最近好多事情搞的樓主心力憔悴,身心俱疲,也想盡快把這個(gè)系列完結(jié)掉,也好了卻一件心事。 本文...
摘要:年,阿里巴巴在上開源,許多開發(fā)者及公司都青睞于使用來解決服務(wù)化問題。首先阿里巴巴將開源提到了新的戰(zhàn)略高度,去年云棲大會(huì)上阿里云宣布了加大技術(shù)投入擁抱開源的策略。自去年開源重啟以來,上的數(shù)增長接近,達(dá)到了。 摘要: 羅毅,花名北緯。這個(gè)名字,如果是混過天涯論壇的大齡網(wǎng)民應(yīng)該都不陌生,北緯67度3分周公子(簡稱北緯)虐殺易燁卿MM的世紀(jì)大戰(zhàn)至今還是天涯神貼 ,當(dāng)時(shí)更是有看客賦詩形容:目睹此...
摘要:隨著年上半年的臨近尾聲,我們有必要重新回顧一下云計(jì)算之戰(zhàn),看看這一年將如何發(fā)展。毫不奇怪,這三家公司分別是,微軟和谷歌云,它們進(jìn)入了領(lǐng)導(dǎo)象限。邊緣計(jì)算即服務(wù)。此舉是邊緣設(shè)備上機(jī)器學(xué)習(xí)的有趣測試平臺(tái)。和打磨他們的云計(jì)算并關(guān)注。 隨著基礎(chǔ)設(shè)施領(lǐng)域的差距縮小,上半年最有意思的發(fā)展圍繞著軟件即服務(wù)展開。然而,物聯(lián)網(wǎng),...
摘要:隨著年上半年的臨近尾聲,我們有必要重新回顧一下云計(jì)算之戰(zhàn),看看這一年將如何發(fā)展。毫不奇怪,這三家公司分別是,微軟和谷歌云,它們進(jìn)入了領(lǐng)導(dǎo)象限。邊緣計(jì)算即服務(wù)。此舉是邊緣設(shè)備上機(jī)器學(xué)習(xí)的有趣測試平臺(tái)。和打磨他們的云計(jì)算并關(guān)注。 隨著基礎(chǔ)設(shè)施領(lǐng)域的差距縮小,上半年最有意思的發(fā)展圍繞著軟件即服務(wù)展開。然而,物聯(lián)網(wǎng),人工智能和機(jī)器學(xué)習(xí)也形成了差異。隨著2018年上半年的臨近尾聲,我們有必要重新回顧一...
閱讀 2257·2023-04-26 00:00
閱讀 3457·2021-09-24 10:37
閱讀 3627·2021-09-07 09:58
閱讀 1588·2019-08-30 15:56
閱讀 2277·2019-08-30 13:11
閱讀 2370·2019-08-29 16:38
閱讀 1060·2019-08-29 12:58
閱讀 1986·2019-08-27 10:54