1 Star 0 Fork 10

桃子/iQuery

forked from 南漂一卒/iQuery 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
README.md 6.65 KB
一键复制 编辑 原始数据 按行查看 历史

#iQuery

【概述】

iQuery 是一个普适轻巧DOM/JavaScript 开发库 —— 支持 IE 8+ 的 jQuery/W3C 兼容 API,包含 最常用的 jQuery 静态/实例 属性、方法,适合替代逻辑简单的网页中体积很大的 jQuery,或作为“Web 前端开发基础库”嵌入各种 独立发布(不能有外部依赖、自闭合、有兼容性要求)的 JavaScript 库。

若 Zepto 相当于 jQuery v2.x 的精简版,那 iQuery 就相当于 jQuery v1.x 的精简版;而且 iQuery 在与 Zepto 接近的 Minimized 体积中提供了 IE 8/9 的兼容、更贴近官方的 jQuery 对象实现 以及 更多的实用扩展(见下文)。

在 API 形态上尽力兼容 jQuery 的同时,iQuery 在内部实现上采取**“面向未来,向前兼容”的 Shim 策略** —— 核心逻辑(1800 行左右)尽力基于 W3C、ECMA 最新标准中的优秀 API,老旧浏览器兼容代码(基于 jQuery API,400 行左右)尽力包装成与新 API 相同的形式(原型拓展),并独立为外部模块。这样做不但能复用 jQuery API 来高效实现,还方便开发人员自行裁剪。

【注】对 IE 的兼容仅限其“标准模式”,而非“兼容性视图”。

【入门】

  1. 基础知识 ——《jQuery API 文档
  2. 嵌入使用 —— 典型应用实例项目:文件级前端脚本加载器 EasyImport.js
  3. 独立使用 ——(HTML 源码基本结构示例如下)
<!DocType HTML>
<html><head>
    <meta http-equiv="X-UA-Compatible" content="IE=Edge, Chrome=1" />
    <script src="path/to/iQuery.js"></script>
</head><body>
    ...
</body></html>

成功驱动的项目

  1. EasyImport.js
  2. 某公司 JS-SDK
  3. EasyWebUI
  4. EasyWebApp
  5. 某公司 开放平台、业务后台
  6. 某公司 微信轻应用

【对 jQuery(最新版)的增强】

  • 内置一个改进且向下兼容的 $.browser 对象,能通过直接比较版本号来区分浏览器
  • 新增 计时相关方法(秒基准)—— $.every()、$.wait()、$.start()、$.end()
  • 新增 唯一串号生成器 —— $.guid()
  • 新增 纯数据类型判断方法 —— $.isData()
  • 新增 对象值相等判断方法 —— $.isEqual()
  • 新增 字符串部分分割方法 —— $.split()(借鉴 PHP)
  • 新增 URL 参数对象化方法($.param() 的逆方法)—— $.paramJSON(),其返回值自带的 .toString() 有 JSON 格式化(美化)输出能力
  • 更智能的 $.get()、$.post():支持 form 元素、FormData 对象的请求数据形式,整合 XHR、XDR、JSONP、iframe 自适应 跨域请求自动转换响应内容为 JSON 或 XML 对象实例
  • 新增 $.delete()、$.put(),方便实现基于 RESTful API 的单页应用
  • 新增 URL 文件名提取方法 —— $.fileName()
  • 封装了表单元素无刷新提交,并可直接绑定响应回调 —— $.fn.ajaxSubmit()(基于前述的几个 AJAX 增强方法 构建)
  • 新增基于现代浏览器 Crypto API 的哈希方法 —— $.dataHash()
  • 新增 选择符合法性判断方法 —— $.is_Selector()
  • 更多 jQuery 伪类选择符
    • :image 还支持 img, link[type="image/x-icon"], svg, canvas
    • :button 还支持 input[type="submit"], input[type="reset"], input[type="image"]
    • 新增 :data 伪类 来筛选有 data-* 属性的元素
    • 新增 :list 伪类,等价于 ul, ol, dl
  • 新增 DOM 元素集合父元素交集方法 —— $.fn.sameParents()
  • 新增 DOM 对象通用 .value() 方法,智能存取多种类型的值
  • .css() 取值时,会把 纯数字值、像素值 直接返回为 Number 类型
  • .css() 赋值一律默认 important 优先级,确保赋值的有效性
  • 新增 DOM 元素 z-index 集成方法 —— $.fn.zIndex(),集“取实际值、赋值、同辈置顶/沉底”功能于一身
  • 新增 .cssRule() 静态/实例方法,便于就近声明 DOM 元素的 CSS 规则
  • 新增 伪类/元素 CSS 规则对象 提取方法 —— $.cssPseudo()
  • 封装 Animate.css 为 $.fn.cssAnimate(),其调用参数 兼容 $.fn.animate()
  • 封装了触屏单指手势事件(tap、press、swipe),并为桌面端、移动端提供一致的操作体验

【未实现的 jQuery(最新版)特性】

  • 没有 $.noConflict(),但不会强占 jQuery 变量
  • 不支持 浏览器内置类型(构造函数)相应的 $.isXXX() 方法(但 $.type() 均能返回与构造函数名一致的“类型名”)
  • 暂不支持 $.ajax() 及相关的各种自定义选项
  • 不支持 $.Deferred()(正在尝试引入 ECMAScript 6 支持的 Promise/A+ 规范
  • jQuery 扩展伪类选择符:只支持 常用且“难以用 CSS 标准选择符 或 jQuery API 实现其功能”的
  • 不支持 XPath 选择器、操作 XML 文档
  • 构造 DOM 元素时的第二参数中不能调用与键名同名的实例方法,仅能设置 DOM 属性
  • 不支持一些不常用的 jQuery 静态/实例方法
  • 事件冒泡 完全依赖 浏览器自身实现,不做抽象统一
  • 暂不支持 动画队列速度曲线函数

【JavaScript、DOM、BOM 原生 API 扩展】

  • 自带 Array indexOf 标准方法
  • String trim 方法支持 非空白符(借鉴 PHP)
  • 新增 String repeat 标准草案方法
  • 新增 String toCamelCase(驼峰命名法)、toHyphenCase(连字符命名法)书写格式转换方法
  • 自带 Date now 标准方法
  • 新增 JSON format 格式化显示方法、parseAll 深度解析方法($.parseJSON() 被其增强)
  • 重写 IE 8 Error 对象的 valueOf 方法,使之返回可查询的错误码(附带 官方文档 URL)
  • 新增 DOMHttpRequest 对象,封装了 JSONP Getiframe Post
  • 自带 DOMStringMap 对象,为 IE 8/9 提供 dataset 支持
  • 自带 HTML 5 History API,为 IE 8/9 提供兼容支持
  • 修正 IE 8- DOM Attribute 系列方法对 JavaScript 关键字的特殊处理
  • 自带 CSSStyleDeclaration 对象,为 IE 8 提供 getComputedStyle 支持,并封装了 M$ DirectX 滤镜属性转换
  • 自带 HTMLEvents、CustomEvent 对象,为 IE 8 提供 W3C Event API 支持
  • 自带 HTML 5 Form API,为 IE 8、iOS WebKit 提供兼容支持
  • 自带 DOMParser 对象,为 IE 8 提供 XML 文档解析支持
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/taoyy/iQuery.git
git@gitee.com:taoyy/iQuery.git
taoyy
iQuery
iQuery
master

搜索帮助

A270a887 8829481 3d7a4017 8829481