什么是 smartJQ?

smartJQ 是 jQuery 的重构压缩版,在 jQuery API 的模型上,黑盒情况下制作的库;

兼容所有现代化的浏览器,因为不需要像 jQuery 一样对旧版本浏览器(IE10之前)兼容,所以体积小很多;

下载

smartjq.js 完整版下载

smartjq.min.js 完整混淆压缩版下载

smartJQ 推荐版

如果使用 jQuery 更多的是因为它的 dom 操作方便,就使用这个版本;

smartjq-recommend 是在 smartJQ 基础上去掉了 $.ajax$.Deferred,希望开发者使用 Fetch APIPromise代替;

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 有很多的不足;

而 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,推荐使用 FetchXMLHttpRequestPromise 替代;

兼容问题上可以 polyfill 解决:

fetch

Promise

其他

smartJQ 没有编写jQuery Callbacks API,因为用的太少了;

smartJQ的 animate 方法,提供了 cubic-bezier 支持,曲线部分你能使用 css3 动画中的动画曲线表达式(包括字符串形式 ease ease-in ease-in-out ease-out);delay 方法嵌入到参数里了。

感谢 zepto 和 jQuery,smartJQ 部分参考了它们的代码,没有它们就没有 smartJQ;

项目初期可能有测试不足的地方,若发现bug欢迎 提交