生命不息,折腾不止。断断续续独自开发了一年多的 easy.js 终于初步完成并开源,这是 easy.js 很重要的一步。而对于我个人来说,收获也较多。在开发的过程中,面对过诸多疑难问题的挑战,每解决一个难题对于我都是一次小提升。
jQuery 确实很优秀,我有怀疑过,但还是要承认这个事实。如果脱离了 jQuery,我还会写 JavaScript 代码吗?这是当时开发 easy.js 的契机--摆脱依赖,更深入的学习。开发 easy.js 的过程就是一个不断学习和进步的过程。当然,这并不是鼓励那些当时和我一样对于 JavaScript 类库和框架有很强依赖性的开发者都去开发自己的类库( 如果你有这个能力和精力可以去尝试 ),但是如果不了解这些 JavaScript 类库和框架的背后的原理,只停留在"会用"的阶段,恐怕只能原地踏步,难以上到一个新台阶上。毕竟,类库和框架只是提高开发效率的工具,不仅仅要擅于利用这些工具,必要时要具备自己创造工具的能力。
模块化的 JavaScript 时代已经到来。在模块化标准 CMD 和 AMD 规范之前,YUI 就已经实现了,虽然不是那么标注。RequireJS 的风行让国外的开发者都有了模块化开发的意识,RequireJS 走的是 AMD 的路线,但是其作为一个模块加载器体积稍微偏大,在本土化方面也不尽人意。SeaJS 推动了国内的模块化开发的思想。SeaJS 走的是 CMD 的路线,相比 AMD,SeaJS 不够灵活,毕竟 Node.js 的那一套加载机制并不符合前端 JavaScript 编写的习惯。
easy.js 有 jQuery 式的简洁易用的 API 风格,在模块加载方面,汲取了 RequireJS 的长处,遵循 AMD 规范,并尽量简单化。我是个"懒人",对于 easy.js 的开发,怎么简单就怎么来,一个功能绝对不会有多个差不多的 API 接口,也决不搞那些开起来好像挺丰富实则是鸡肋的功能,这可以确保 easy.js 尽量保持简洁。我也常常会对其他开发者说,不要把功能搞得太复杂,先把基本需求做好再说。jQuery 就有很多实现相同功能的 API 接口,比如绑定事件有众多的相似的方法,这只会给开发者带来困惑。也有很多看似鸡肋的功能,jQuery 发展了这么长时间,为了满足各种业务需求,确实会积累一定的历史包袱。
人不能害怕新事物,尤其是对于开发者来说,新技术的出现,不能总是抱着"这新玩意肯定不靠谱"的想法。人生经验就是绘制在脑海里的"地图",只有不断的更新"地图",才能与时俱进、不会和社会和行业发展脱节。对于新技术的出现,开发者要勇于尝试,我也常常告诉自己应该多接触新东西以拓宽自己的视野。如果你想深入学习 JavaScript 库或框架的实现和运作的原理,easy.js 会是一个很好的开端,因为 easy.js 的源码相当易读,当然只有你看过之后才知道我到底是不是在忽悠人。
虽然 easy.js 在开源前已经经过无数手动测试和单元测试,但难免会存在一些 BUG,或者你认为需要改进的地方。如果你有任何建议或者发现了任何 BUG,都可以通过邮件联系我,或者加入 QQ 群,一起讨论 easy.js 和模块化 JavaScript 的开发。
easy.js 在 github 的地址:https://github.com/chenmnkken/easyjs
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8