jQuery 1.8.3 | KISSY 1.3 |
---|---|
作用域:jQuery、$ 为全局变量。 插件:jQuery 以插件机制方便开发者扩展其自身所不提供的功能,插件可以静态加载, 与 jquery.js 合并,或者使用 Sea.js 之类的模块加载器动态加载。本文中的所有示例只限于 jQuery 核心功能,不讨论插件。 |
作用域:KISSY 为全局变量。 模块:KISSY 本身也是个加载器,DOM 操作、Ajax 请求、事件机制、Base 模块等, 在 KISSY 内部都是以 KISSY 模块的形式存在。要扩展 KISSY,加上项目需要的公用库,只需按照 KISSY Loader 约定的语法,添加、使用模块即可。 KISSY 在回调函数里加 S 参数的做法,会让人想到 YUI 。但与 YUI 不同的是,KISSY 不是个构造函数,它只是个普通对象。
回调函数里那个 S,正是 KISSY 对象自身。 |
编写模块 | 使用模块 | 注解 |
---|---|---|
|
|
这一套模块编写与应用的过程与时兴的其他模块加载器相若,与 Sea.js 的区别是,KISSY 不提倡匿名模块的使用。 也因为此,KISSY 的粒度比 jQuery 细,DOM 操作、Ajax 请求、事件支持等,都对应到相应的模块, 在使用时,可以有两种方式:
方式二的代码示例如下:
视你的项目需求复杂度而定,普通页面,直接使用方式一无妨。 |
jQuery 1.8.3 | KISSY 1.3.0 | 注解 |
---|---|---|
|
|
jQuery 与 KISSY 的选择器语法基本相同,在 KISSY 中需要显式打开 sizzle 选择器引擎以支持
CSS 3 选择器。 KISSY 默认仅支持 #id tag.class 常用形式,详细列表见 selector 文档 |
|
|
假如找不到相应的节点,S.one 返回 null ,而 |
|
|
选择所有 class 为 foo 的节点。 开启后 sizzle 引擎后, Node.all 在选择器与节点实例化上等同于 $ :
|
|
|
在给定节点中查找 class 为 foo 的 p 子节点。 KISSY 中用于处理节点的类叫做 NodeList ,S.one 与 S.all 是其静态方法,同时在它的原型链上也有 NodeList#one 与 NodeList#all 方法,可与 jQuery#find 对应。 |
|
|
创建新的 DOM 元素,暂未添加至 DOM 树。 |
|
|
两者一致。 在 KISSY 早前的版本中,API 更偏向于 YUI 一些,不过这些都已成为过去,就好像那浮云一样。 |
|
|
jQuery 的 工具包 与 KISSY lang 模块提供的辅助方法大约有 80% 的交集。 常用的基本都覆盖到了。 |
|
|
判断是否为数值类型。 |
|
|
过滤数组。 |
|
KISSY 中自然不会有这个,KISSY 的扩展机制请看 KISSY Loader 章节。 |
|
|
KISSY 中的辅助方法更多。 |
|
|
KISSY 中提供的字符串替换方法,可以当做一个穷人版的模板引擎来用。 | |
|
|
两者的返回值有所不同。jQuery 的更像是 Array#indexOf,在 if 表达式中使用时尤其需要注意。 |
|
|
混入一个或者多个对象到某一特定对象,是前端代码中比较常见的操作,尤其是要为函数、类提供初始参数时。 jQuery 提供的方法是 extend,KISSY 则叫 mix,两者的可变参数完全不同,使用时需注意。 |
|
在 mix 的基础上,KISSY 还提供了 augment 与 extend 方法,方便扩展构造函数。 |
|
|
|
两者唯一的差别就是给回调函数的参数顺序不一样, KISSY 的更贴近 Array#forEach |
|
|
KISSY 不支持传入对象,两者表现都与 Array#map 一致。 |
|
|
创建绑定上下文的匿名函数,参见 Function#bind jQuery 还提供另一种调用形式,只需写一遍 context。 |
jQuery 1.8.3 | KISSY 1.3 | 注解 |
---|---|---|
|
|
KISSY 不支持 .click 这种语法糖,确实也没有多少必要。 |
|
|
事件代理。 |
|
|
触发事件,jQuery 中的 #triggerHandler 比较特殊。 KISSY 1.3版本中增加的#fireHandler |
jQuery 1.8.3 | KISSY 1.3 | 注解 |
---|---|---|
|
|
普通 Ajax GET 请求。 |
|
|
JSONP 请求。 |
模仿 jQuery - YUI Rosetta Stone 搞了这么个对照表, 希望对熟悉 jQuery,但初次接触 KISSY 的同学有所帮助。
如有纰漏,欢迎 fork。