SlideShare una empresa de Scribd logo
1 de 46
Descargar para leer sin conexión
DIVE INTO KISSY!
     KISSY简介
• 拔赤
 淘宝前端开发工程师
 http://jayli.github.com
• An Enjoyable JavaScript Library

• 小巧灵活,简洁实用
• 使用起来让人感觉愉悦。
WhyKISSY?

•   YUI 的bug解决不及时,开发周期长
•   jQuery 在 OO 上的缺陷
•   Mootools 存在全局污染隐患
•   ExtJs 体积庞大,高PV页面的性能缺陷
•   …
KISSY 由淘宝前端团队开发维护




  http://ued.taobao.com
http://github.com/kissyteam/kissy
        KISSY on Github
•   模块化设计
•   沙箱
•   颗粒化
•   动态加载
Seed
种子的引入

• 目前最新版本 1.1.6
• http://a.tbcdn.cn/s/kissy/1.1.6/kissy-min.js
从沙箱启动

KISSY.ready(function(S) {


            Kissy 沙箱

});
引入内置模块

KISSY.use(‘core’, function(S) {
    /* sandbox */
});
引入多模块

KISSY.use(‘core,sizzle’, function(S) {
    /* core 在种子里 */
    /* sizzle 在 sizzle.js中,动态加载 */
});
可引用的内置模块
  模块名称                   备注
     core      lang/dom/event…核心模块
    sizzle            选择器引擎
datalazyload           延迟加载
    flash               flash
 switchable      Tab切换/轮播/旋转木马…
  suggest              自动提示
   overlay               面板
imagezoom            图片放大镜控件
  calendar             日历控件
//添加外部模块
KISSY.add({
    name: ‘calendar’,
    path: ‘calendar-pkg-min.js’,
    requires: [‘core’]
});
//程序启动
KISSY.use(‘calendar’, function(S) {
    new S.Calendar(‘#id’);
});
让代码解耦

KISSY.add(‘my-mod’, function(S) {
    /* 子逻辑 */
}).ready(function(S){
    /* 主逻辑 */
});
互不干扰?!

KISSY.use(‘core’, function(S) {
    /* 张三的代码 */
});
…
KISSY.ready(function(S){
    /* 李四的代码 */
});
前端页面组成
               Module
     Module               Module



Module                             Module
              PageLogic

                Apps

                KISSY
创建“应用”
//创建一个KISSY实例’TShop’
KISSY.app(‘TShop’);
//给这个实例添加模块
TShop.add(‘mod’, function (TS){ });
//从沙箱启动
TShop.use(‘mod’, function (TS){ });
Core
Seed


kissy-min.js



               Core
核心的组成
 功能名称                 备注
     ua           浏览器嗅探
dom/event         Dom/Event
   node       对Dom/Event的高级封装
    ajax              Ajax
  cookie            Cookie
   json              Json
   anim               动画
 attribute         属性操作
   base            Kissy基类
浏览器嗅探

KISSY.ready(function (S){
    //S.UA存储当前浏览器相关属性
    S.log(S.UA);
});
更多浏览器外壳的嗅探

  S.UA.外壳          注释
 S.UA.se360     360“安全”浏览器
S.UA.maxthon       傲游
   S.UA.tt        腾讯浏览器
S.UA.theworld     世界之窗
S.UA.sougou       搜狗浏览器
Node节点操作

KISSY.use(‘core’, function(S) {
    /* 获取一个节点 */
    var node = S.one(‘.className’);
    /* 获取多个节点 */
    var nodelist = S.all(‘.className’);
});
Dom节点操作

KISSY.use(‘core’, function(S) {
    var elem = S.get(‘#id’); //裸节点

      S.DOM.css(elem,’color’,’red’);
      S.DOM.text(elem,’hello,kissy!’);
});
KISSY默认仅支持这些选择器

    #id
    tag
    .cls
    #id tag
    #id .cls
    tag.cls
    #id tag.cls
更多选择器需载入sizzle

KISSY.use(‘core,sizzle’, function(S) {
    /* 启动程序 */
});
Node常用操作
KISSY.use(‘core’, function(S) {
    /* 链式调用 */
    S.one('#test').parent()
         .next()
         .html('<p>new paragraph</p>')
         .appendTo('#test2')
         .on('click', function(ev) {
             alert(this.text());
         });
});
获取 Node/NodeList 的节点
KISSY.use(‘core’, function(S) {
    /* 获取一个节点 */
    var node = S.one(‘.className’);
    /* 获取多个节点 */
    var nodelist = S.all(‘.className’);

      //获取 DOMElement
      alert(node[0].nodeType);
      alert(nodelist[0].nodeType);
});
遍历 NodeList
KISSY.use(‘core’, function(S) {
    var nodelist = S.all(‘.className’);
    //获取 NodeList 节点个数
    alert(nodelist.length);
    //遍历 NodeList
    nodelist.each(function(node,i){
         //node:当前遍历到的节点
         //i:索引
    });
});
绑定事件
KISSY.use(‘core’, function(S) {
    var nodelist = S.all(‘.className’);
    nodelist.on(‘click’,function (e){
         //e: 事件对象
         //e.target: 事件发生所在的node
         //this: nodelist 对象
         e.preventDefault(); //阻止事件
    });
});
Node/NodeList 常用方法

  hasClass addClass removeClass
  toggleClass attr text val css width
  height offset parent remove
  next prev children contains
  append appendTo on detach



http://kissyteam.github.com/kissy/docs/node/index.html
Cookie
KISSY.use(‘core’, function(S) {
    //读cookie
    S.Cookie.get(‘key’);
    //写cookie
    S.Cookie.set(‘key’,’value’);
});
Ajax
KISSY.use(‘core’, function(S) {
    S.IO.get(‘url’,function(data){
         //get callback exec here
    });
    S.IO.post(‘url’,function(data){
         //post callback exec here
    });
});
JSON
KISSY.use(‘core’, function(S) {
    //从object转换为字符串
    var str = S.JSON.stringify({
         a:1
    });
    //从字符串转换为object
    var obj = S.JSON.parse('{"a":1}');
});
Utilities
Selector

默认仅支持最常用的 #id tag.class
想使用更多 CSS 选择器时,需要额外加载
Sizzle 模块
Sizzle 模块可换用其它 CSS 选择器
Widgets
开发方式与社区
Docs




http://kissyteam.github.com/kissy/docs/index.html
all@kissyui.com 邮件列表讨论




http://github.com/kissyteam/kissy
Dive into kissy

Más contenido relacionado

La actualidad más candente

Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人Fred Chien
 
Varnish简介
Varnish简介Varnish简介
Varnish简介fangdeng
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServBen Lue
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高mysqlpub
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事Ben Lue
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3yiming he
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧Chu-Siang Lai
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & WindowsChu-Siang Lai
 
OpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLOpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLHung-yu Lin
 
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Chu-Siang Lai
 
用Min Gw32,Msys搭建Win32下的开发环境
用Min Gw32,Msys搭建Win32下的开发环境用Min Gw32,Msys搭建Win32下的开发环境
用Min Gw32,Msys搭建Win32下的开发环境George Ang
 
Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Chu-Siang Lai
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应zhaolinjnu
 
Node.js 淺談socket.io
Node.js   淺談socket.ioNode.js   淺談socket.io
Node.js 淺談socket.ioSimon Su
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1modou li
 
Koubei banquet 34
Koubei banquet 34Koubei banquet 34
Koubei banquet 34Koubei UED
 
mixin based component infrastructure
mixin based component infrastructuremixin based component infrastructure
mixin based component infrastructureyiming he
 
Node.js with express
Node.js with expressNode.js with express
Node.js with expressjavakidxxx
 
生成 Android 签名文件
生成 Android 签名文件 生成 Android 签名文件
生成 Android 签名文件 YUCHENG HU
 

La actualidad más candente (20)

Koa 正在等一個人
Koa 正在等一個人Koa 正在等一個人
Koa 正在等一個人
 
Varnish简介
Varnish简介Varnish简介
Varnish简介
 
不一樣的Web server... coServ
不一樣的Web server... coServ不一樣的Web server... coServ
不一樣的Web server... coServ
 
MySQL快速入门与提高
MySQL快速入门与提高MySQL快速入门与提高
MySQL快速入门与提高
 
學好 node.js 不可不知的事
學好 node.js 不可不知的事學好 node.js 不可不知的事
學好 node.js 不可不知的事
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧現代 IT 人一定要知道的 Ansible 自動化組態技巧
現代 IT 人一定要知道的 Ansible 自動化組態技巧
 
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
現代 IT 人一定要知道的 Ansible 自動化組態技巧 Ⅱ - Roles & Windows
 
OpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQLOpenWebSchool - 06 - PHP + MySQL
OpenWebSchool - 06 - PHP + MySQL
 
Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)Automate with Ansible basic (2/e)
Automate with Ansible basic (2/e)
 
用Min Gw32,Msys搭建Win32下的开发环境
用Min Gw32,Msys搭建Win32下的开发环境用Min Gw32,Msys搭建Win32下的开发环境
用Min Gw32,Msys搭建Win32下的开发环境
 
Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)Automate with Ansible basic (3/e)
Automate with Ansible basic (3/e)
 
Mysql展示功能与源码对应
Mysql展示功能与源码对应Mysql展示功能与源码对应
Mysql展示功能与源码对应
 
Node.js 淺談socket.io
Node.js   淺談socket.ioNode.js   淺談socket.io
Node.js 淺談socket.io
 
Banquet 15
Banquet 15Banquet 15
Banquet 15
 
Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1Uliweb cheat sheet_0.1
Uliweb cheat sheet_0.1
 
Koubei banquet 34
Koubei banquet 34Koubei banquet 34
Koubei banquet 34
 
mixin based component infrastructure
mixin based component infrastructuremixin based component infrastructure
mixin based component infrastructure
 
Node.js with express
Node.js with expressNode.js with express
Node.js with express
 
生成 Android 签名文件
生成 Android 签名文件 生成 Android 签名文件
生成 Android 签名文件
 

Similar a Dive into kissy

Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践yiming he
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starteryiming he
 
面向未来的前端类库开发 — KISSY 类库构想与实践
面向未来的前端类库开发  — KISSY 类库构想与实践面向未来的前端类库开发  — KISSY 类库构想与实践
面向未来的前端类库开发 — KISSY 类库构想与实践taobao.com
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非Tony Deng
 
Node getting-started
Node getting-startedNode getting-started
Node getting-startedlylijincheng
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践lifesinger
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发leneli
 
Node js实践
Node js实践Node js实践
Node js实践myzykj
 
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian ShanghaiJackson Tian
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践taobao.com
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层yiditushe
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程洧杰 廖
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile ServicesKuo-Chun Su
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记yiditushe
 
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAP
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAPiOS App 開發 -- Storybard 基礎練習、APP 上架、IAP
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAPMing-Sian Lin
 

Similar a Dive into kissy (20)

Kissy模块化实践
Kissy模块化实践Kissy模块化实践
Kissy模块化实践
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
 
Mvc
MvcMvc
Mvc
 
面向未来的前端类库开发 — KISSY 类库构想与实践
面向未来的前端类库开发  — KISSY 类库构想与实践面向未来的前端类库开发  — KISSY 类库构想与实践
面向未来的前端类库开发 — KISSY 类库构想与实践
 
Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非
 
Node getting-started
Node getting-startedNode getting-started
Node getting-started
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
 
Node js实践
Node js实践Node js实践
Node js实践
 
Browser vs. Node.js Jackson Tian Shanghai
Browser vs. Node.js   Jackson Tian ShanghaiBrowser vs. Node.js   Jackson Tian Shanghai
Browser vs. Node.js Jackson Tian Shanghai
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层
 
Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程Gulp.js 自動化前端任務流程
Gulp.js 自動化前端任務流程
 
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
從 Web Site 到 Web Application,從 Web Services 到 Mobile Services
 
Ejb工作原理学习笔记
Ejb工作原理学习笔记Ejb工作原理学习笔记
Ejb工作原理学习笔记
 
Banquet 52
Banquet 52Banquet 52
Banquet 52
 
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAP
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAPiOS App 開發 -- Storybard 基礎練習、APP 上架、IAP
iOS App 開發 -- Storybard 基礎練習、APP 上架、IAP
 
YUI 3 菜鳥救星
YUI 3 菜鳥救星YUI 3 菜鳥救星
YUI 3 菜鳥救星
 

Más de jay li

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版jay li
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践jay li
 
Jswebapps
JswebappsJswebapps
Jswebappsjay li
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascriptjay li
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Designjay li
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器jay li
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础jay li
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼jay li
 
F2e security
F2e securityF2e security
F2e securityjay li
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟jay li
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎jay li
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤jay li
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问jay li
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developerjay li
 
Html5form
Html5formHtml5form
Html5formjay li
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkitjay li
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计jay li
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计jay li
 
赤骥 用户研究入门
赤骥 用户研究入门赤骥 用户研究入门
赤骥 用户研究入门jay li
 

Más de jay li (20)

犀牛书第六版
犀牛书第六版犀牛书第六版
犀牛书第六版
 
淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践淘宝移动端Web开发最佳实践
淘宝移动端Web开发最佳实践
 
Jswebapps
JswebappsJswebapps
Jswebapps
 
潜力无限的编程语言Javascript
潜力无限的编程语言Javascript潜力无限的编程语言Javascript
潜力无限的编程语言Javascript
 
Responsive Web UI Design
Responsive Web UI DesignResponsive Web UI Design
Responsive Web UI Design
 
深入剖析浏览器
深入剖析浏览器深入剖析浏览器
深入剖析浏览器
 
HTML/CSS/JS基础
HTML/CSS/JS基础HTML/CSS/JS基础
HTML/CSS/JS基础
 
淘宝前端技术巡礼
淘宝前端技术巡礼淘宝前端技术巡礼
淘宝前端技术巡礼
 
F2e security
F2e securityF2e security
F2e security
 
中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟中国元素在设计中的应用 -如瑟
中国元素在设计中的应用 -如瑟
 
卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎卫银霞 -统计数字会撒谎
卫银霞 -统计数字会撒谎
 
编码大全 拔赤
编码大全 拔赤编码大全 拔赤
编码大全 拔赤
 
小控件、大学问
小控件、大学问小控件、大学问
小控件、大学问
 
Mobile UI design and Developer
Mobile UI design and DeveloperMobile UI design and Developer
Mobile UI design and Developer
 
Html5form
Html5formHtml5form
Html5form
 
Slide
SlideSlide
Slide
 
Js doc toolkit
Js doc toolkitJs doc toolkit
Js doc toolkit
 
新业务新员工培训 Banner设计
新业务新员工培训   Banner设计新业务新员工培训   Banner设计
新业务新员工培训 Banner设计
 
夏之 专题设计
夏之 专题设计夏之 专题设计
夏之 专题设计
 
赤骥 用户研究入门
赤骥 用户研究入门赤骥 用户研究入门
赤骥 用户研究入门
 

Dive into kissy