有哪些值得一读的优秀开源 JS 代码
首先,沒有“必須”讀的源代碼(我發現我特喜歡說首先……),因為讀源代碼不是做功課,只有用到或是非常好奇才會去讀,當成“日常”去做是沒有意義的。
當然有些人會說 xxx 是經典,任何人讀過都可以收獲很多知識和技巧。我不否認那些經典,但是我很懷疑“任何人”的數量到底占“感興趣”的人多少?我的意思是,興致勃勃開始讀的人絕對很多,但能從里面學到點什么的人就很少了。
不知道別人怎么看待讀源碼這件事情,我個人讀源碼的時間并不多,基本上只有三種原因會促使我去讀源碼:
- 讀到描述不清的文檔的時候,或者對文檔的描述有疑問的時候;
- 因工作需要不得不去弄清代碼的細節的時候,有時候是因為調試,有時候是因為二次開發等等;
- 為開源項目做貢獻或打算編寫擴展的時候;
可以看出我讀源碼的目的性都很強,泛泛而讀的時候也有過,但通常都沒什么收獲就困了……只有抱著明確的目的去讀源碼的時候才會有收獲,而且必須得有收獲否則目的無法達成。另外,目的達成就收工,若有興趣繼續讀也會把它先擱下,因為吃多了消化不好。
還有,我很少很少去讀框架的源代碼,唯一認真讀多且比較多比較深入的只有 Rails 和 Ember,并且都是基于上述原因才去讀的。我在回答的問題的時候經常引用源代碼,但基本上都不是預先讀過,而是碰到了問題才去讀的。讀懂了就回答,不懂就罷。不讀框架源代碼的主要原因是框架中的多數代碼都是“匠氣有余而匠心不足”(這是可以理解的,并非批判),真正精彩的部分在框架型項目里往往只占很小的部分,而為了找到并鉆研這些部分卻要花費大量的時間,個人覺得性價比偏低。
我喜歡那些匠心獨運但又不炫技,可讀性非常好卻又能讓人經常“啊哈!”的代碼。在 JavaScript 的領域里,首推 TJ Holowaychuk 的各種項目,它們都具有我說的那些優點:
- 高可讀性
- 結構優秀,小巧而豐富,代碼平實精煉,不炫技
- 注重文檔
- 測試完備
在 https://github.com/tj 這里可以找到它們,另外注意他所屬的各種組織,如 koa、express 等等,都有他貢獻的許多代碼。不過現在他已經把興趣移到 Go 上去了,唯一還在維護的 JavaScript 項目只剩下 koa.js(外加其周邊,如 co 等項目)。
國人在 Github 上的活躍度不算太高,主要大多數人都忙于內部項目,少數提煉的比較精致值得開源的項目也往往受制于條件限制而只能在小范圍內傳播。前兩天剛讀過一個項目,寫得不錯:https://github.com/army8735/jsdc
順藤摸瓜,你可以通過這個項目找到一些活躍者,然后去翻他們的 repos 吧。
我覺得underscore可以讀一讀
至于jquery什么的奇淫技巧太多了
Backbone或者它的輕量版Exoskeleton 它教你怎么寫框架,怎么組織業務邏輯
jQ讀不動的話可以考慮讀讀Zepto 它教你怎么搞定DOM,附贈Ajax
樓上有人提過的Underscore不錯,但未來似乎是屬于lodash的 它教你怎么擺平復雜數據結構
最后,雖然不是一個具體的項目,但Github Trending值得你關注,它告訴你最新最酷的項目是什么
Slide
作者在 readme 寫到:
應該把 Slide 當作一個示例,它演示了如何編寫自己的工作流控制工具。如果沒有親手寫過工作流控制庫,就永遠不會真正地瞭解它。
我先說:http://stackoverflow.com/questions/6638518/good-opensource-js-project-for-learning
不過是三年前的了。另如果誰知道國人寫的優秀開源 js 項目,也歡迎推薦。
不過值得一讀的東西倒是挺多的。樓上給的那個列表貌似都是很大的 library/framework,那我就來兩個身材很小、功能很具體的專用 library 好了。
https://github.com/gorhill/Javascript-Voronoi
http://sandbox.scriptiny.com/tinybox2/
https://github.com/Modernizr/Modernizr
另外,在 general library 里面,我推薦先讀 Underscore,同樣是因為比較輕,并且結構清晰,功能很有用。
總結
以上是生活随笔為你收集整理的有哪些值得一读的优秀开源 JS 代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iniparser——C配置文件解析库
- 下一篇: Linux服务器I/O性能分析-2