开放式前端类库的构建
hax 的文章很不错:关于国内前端和 JS 技术发展的乱想
愚公贴出了四个月前的聊天记录,如今再读,别有一番滋味:我们需要什么样的“技术”
我当时也留存了一些感想,索性也贴出来:
———————————————————————
这是一篇改变我很多想法的文章:大教堂和集市。老文章,很耐读,最近放在 iPhone 上,没事就看看,烂熟。
世界上有很多聪明人,很多事情已经做得非常棒。有太多更需要投入的地方,的确不应该在别人已经做得很好的地方浪费时间了。
遇到 jquery 的问题,通过 google 一搜,十有八九就能搜到结果,这就是社区。
在公司做事,有两件事情很重要:(1)做什么事;(2)和什么人做事。其他都是浮云。
“天时”是个很奇妙的东西。当有一帮兄弟在召唤你,当有一件事情在吸引你的时候,就是“天时”。当然还需 “地利”和“人和”。在公司环境下,“地利”经常会限制很多想法思路。
步子迈大了,的确可能扯痛蛋,但也仅仅是蛋痛一下下而已。倘若步子迈小了,短时间内蛋不会痛,但却有可能永远错失超越的机遇。
如果你选择一条保守的线路,就只能实现一个狭窄的目标。
大教堂是个梦,很美。人人都想做。
百花齐放的目的,是让每个人都能成为类库/框架的开发者,就和 github 一样。不是形式上的分布式开发,而是内容上也分布式。打散了,物竞天择,人类社会就是这么演化的。
避免重复是很好的实践原则。懂得适量重复,是更高层次的实践。
没有自由,就没有突破。社会如此,写代码也如此。
———————————————————————
下面是读完 hax 文章后,对 seajs 的一些想法:
es5-shim 这一块,hax 和我的想法很相近。我的想法是,seajs 提供一个 conditional load plugin,当探测到当前浏览器缺少哪些 es5 的东东时,自动修复好。这样,所有模块都可以直接基于 es5 来开发,而且对开发者是透明的。
更进一步,还可提供 less 和 coffeescript 等编译扩展。使得基于 seajs 做开发时,可以直接用 less 写 css,用 coffee 语法写 js. 这样可以提前实现将 javascript 变成编译目标语言的愿景,使得 js 的开发直接可利用上最新技术。
基于模块环境 + 模块的方式来构建类库,最难的是模块环境要具有通用性,目前 commonjs 和 nodejs 的努力,使模块环境逐步成熟。其次就是各种模块的筛选和开发了,我早就想拆掉 kissy,只恨目前力又不逮。如果 qwrap 能拆分成多个小类库,绝对支持。拆分的好处,可能会造成少量重复,但好处是更灵活,更自由了。因为小了,意味着可替换性更好,这样,有现成做得不错的,直接拿来用就好。如果找不到满意的,大不了自己开发一个,满足自己的需求同时也能贡献给社区。这是一种良性竞争下的百花齐放。
这样,逐步努力下去,就会形成一个生态圈。生态圈呀,一旦形成,所有人都会受益。希望我不是在作梦。
————————————
最后放一个在 MPD 大会的分享,没什么新内容,不好意思: