什么是 smartJQ?
smartJQ 是 jQuery 的重构压缩版,在 jQuery API 的模型上,黑盒情况下制作的库;
兼容所有现代化的浏览器,因为不需要像 jQuery 一样对旧版本浏览器(IE10之前)兼容,所以体积小很多;
下载
smartjq.js 完整版下载
smartjq.min.js 完整混淆压缩版下载
smartJQ 推荐版
如果使用 jQuery 更多的是因为它的 dom 操作方便,就使用这个版本;
smartjq-recommend 是在 smartJQ 基础上去掉了 $.ajax
和 $.Deferred
,希望开发者使用 Fetch API
和 Promise
代替;
smartjq-recommend.js 推荐版下载
smartjq-recommend.min.js 推荐版压缩混淆下载
应用场景
项目不考虑太旧的浏览器的兼容性(比如mobile web、整合性webview应用等),需要使用jQuery的场合,但又嫌弃jQuery体积太大的情况下,可以选用smartJQ;
相比 zepto (JSLite等),smartJQ 覆盖更全的 jQuery API;
体积比 zepto 小,并且具有更灵活方便的 按需重构smartJQ 功能;
相对 zepto 的优势
我们通常会使用 zepto 来代替 jQuery 做移动开发,因为zepto体积更精简;但是 zepto 相对 jQuery 有很多的不足;
- 特有的选择器的缺乏(:eq :odd :last 等等)
- 事件和数据机制存在缺陷(api和 jQuery 有一定出入,例如clone没有提供深克隆等)
- 缺乏 animate 方法(某些场景不能用 css3 animation 替代,例如滚动动画等)
而 smartJQ 补充了上面的缺陷。
体积对比
名称 | 文件大小(混淆压缩后) |
---|---|
jQuery-3.1.1 | 85kb |
jQuery-2.1.3 | 82kb |
zepto.js | 25kb |
JSLite | 20kb |
smartJQ | 21kb |
smartjq-recommend.js | 17kb |
smartJQ 的定位
smartJQ 的定位是 zepto 的替代品,和 zepto 是竞争关系,smartJQ 有的 zepto 不一定有,zepto 有的 smartJQ 做的比它更好;
smartJQ 和 jQuery 是互补关系;smartJQ 解决了 jQuery 的文件太大的问题,jQuery弥补了兼容性问题。
如果想要研究 jQuery 原理,可以来看看 smartJQ 源代码,没有兼容代码的累赘,相对代码量更少,核心代码少,灵活,通俗易懂;
smartJQ 的生成实例,是通过扩展 Array.prototype 达到 类jQuery 的实例化的效果,所以 smartJQ 生成的对象不仅能使用jQuery API提供的方法,也能使用Array原生提供的方法。(考虑兼容性还是不要当成Array类型使用)
smartJQ 兼容 IE10 及以上(Edge);
使用推荐
建议不启用 $.ajax
和 $.Deferred
,推荐使用 Fetch
或XMLHttpRequest
和 Promise
替代;
兼容问题上可以 polyfill 解决:
其他
smartJQ 没有编写jQuery Callbacks API
,因为用的太少了;
smartJQ的 animate
方法,提供了 cubic-bezier 支持,曲线部分你能使用 css3 动画中的动画曲线表达式(包括字符串形式 ease ease-in ease-in-out ease-out);delay 方法嵌入到参数里了。
感谢 zepto 和 jQuery,smartJQ 部分参考了它们的代码,没有它们就没有 smartJQ;
项目初期可能有测试不足的地方,若发现bug欢迎 提交