淘宝自己的前端框架KISSY(类似jquery) - 简易指南

KISSY 是由阿里集团前端工程师们发起创建的一个开源 JS 框架。

具备模块化、高扩展性、组件齐全,接口一致、自主开发、适合多种应用场景等特性。

在以下方面具有一定优势:

  • A、拥有大量的中文文档;
  • B、在国内具备一定的社区规模;
  • C、开发便捷;
  • D、综合借鉴国际先进的框架类库设计;
  • E、应用场景广泛。

下载引入

KISSY 1.3.0

KISSY seed 1.3.0

引入方式有两种:

  • 1、核心全部加载引入完整的 KISSY
  • 2、按需加载模块引入 seed

引入完整的 KISSY

引入完整的 KISSY 会直接加载全部的 KISSY 核心模块

包括 dom,event,node,base,ajax 等

如果你下载了源码,直接引入 kissy-min.js

<script src="kissy-min.js"></script>

如果你没下载源码,可以引用淘宝 cdn 上的地址

<script src="http://a.tbcdn.cn/s/kissy/1.3.0/kissy-min.js"></script>

操作元素

KISSY 使用了类似 jQuery 的链式操作

只需定义

var $ = KISSY.all

就可以进行如下操作

//Line 126: 获取图片列表元素
var imgList = $(‘.img-list‘).all(‘li‘);
//Line 132: 所有图片元素移除‘active‘类名
this.imgList.removeClass(‘active‘);

//Line 133: 给第next个图片元素添加‘active‘类名
this.imgList.item(next).addClass(‘active‘);

链式操作

//Line 151
var cloneItem = selectedItem.one(‘img‘)
    .clone()                    //复制选中的元素
    .appendTo(‘.content‘)       //添加到容器最后
    .css({
        ‘width‘: ‘100px‘,
        ‘height‘: ‘100px‘})     //设置样式
    .animate({
        ‘top‘: 100
    }, 0.2, ‘easeOut‘)          //添加一个动画
    .animate({
        ‘top‘: 200
        ‘left‘: 200
    }, 1, ‘bounceOut‘, function(){
        ...
    })                          //另一个动画

绑定事件

KISSY 中的事件绑定非常简单

通过一个 on 操作就能完成事件绑定

//Line 178
$(‘button‘).on(‘click‘, function(ev){
    //do something
})

Ajax

KISSY 中对 Ajax 操作进行了一些封装,比如要发起一个 GET 请求

//Line 170
IO.get(‘./server.php‘, {‘index‘: index}, function(data){
    $(‘.detail‘).html(‘<img src="‘ + data.url + ‘" />‘).fadeIn(0.5);
}, ‘json‘)

上述参数分别代表请求地址,发送数据,回调函数,返回数据格式

整体架构

介绍 seed 引入之前,先了解一下 KISSY 整体架构图

1、最底层的 seed 是类似目前流行的 AMD 模块化机制实现。

2、第二层是处理 dom 兼容性的核心模块,每个模块由更小的模块打包合并而来。

3、第三层为组件架构层。

4、第四层为独立可用的 KISSY 组件。

5、最外层为 KISSY gallery,KISSY 社区开发的一些通用模块。

引入 seed

通过 seed 的方式可以实现模块的按需加载

引入 seed 也有两种方式

<script src="seed-min.js"></script>

或者

<script src="http://a.tbcdn.cn/s/kissy/1.3.0/seed-min.js"></script>

loader

首先需要新建一个模块

KISSY.add(function(S, N, E, A, IO){
    var $ = S.all;
    var opLotto = {
        init: function(){
            ...
        },
        ...
    }
    return opLotto;
}, {requires: [‘node‘, ‘event‘, ‘anim‘, ‘ajax‘]});

模块其实就是一个对象,模块名可以忽略,我们会返回这个对象以便在使用模块时方便调用,最后是依赖配置

我们把这个模块保存为 opLotto.js,放在同目录的 module 文件夹下

在加载模块前,我们需要在主页面中对 KISSY 进行一下包配置

KISSY.config({
    packages: [
        {
            name: "module",
            tag: "20130618",
            path: "./",
            charset: "gbk"
        }
    ]
});

在这段代码中我们指定了包的路径,包名,时间戳和编码

然后我们就可以这样来使用模块了

KISSY.use(‘module/opLotto, node, event‘, function(S, OP, N, E){
    S.ready(function(S){
        var $ = S.all;
        OP.init();
        ...
    });
})

component

KISSY 内置了很多有用的组件

比如 button,calendar,datalazyload,overlay,switchable

这些组件的用法非常简单,比如要用到 button 组件,只需要:

KISSY.use("button", function(S, Button) {
    var btn = new Button({
        content: "我是按钮1",
        render: "#button_container",
        tooltip: "hover时显示"
    });
    btn.render();
})

gallery

gallery 是社区贡献的组件集合,汇集了各种各样的功能

比如 kcharts,imgcrop,waterfallx,slide,uploader

gallery 鼓励分享,任何人都可以为 gallery 提交自己的组件

在 KISSY 1.3.0 中内置了 gallery package,使用 gallery 组件非常方便

KISSY.use(‘gallery/offline/1.0/index‘, function (S, Offline) {
    var offline = new Offline();
    ...
})

其他

KISSY Module Compiler 使用说明

是一个模块依赖自动抽取合并工具,结合 KISSY Loader,在模块代码部署阶段,可以将多个模块根据其依赖合并为一个文件,减少 HTTP 链接数

或者通过在 KISSY.config 中设置开启自动 combo 模式减少链接数

关于

讨论旺旺群:29676575

google group:kissy-ui

邮箱:[email protected]

项目主页:github - kissy



Disqus seems to be taking longer than usual. Reload?

淘宝自己的前端框架KISSY(类似jquery) - 简易指南

时间: 2024-10-26 20:07:55

淘宝自己的前端框架KISSY(类似jquery) - 简易指南的相关文章

跨平台前端框架学习——bootstrap,jquery,angular

按照我的理解前端开发的框架可以分为三种类型: UI框架:这部分如bootstrap,定义了一套css样式风格,帮助布局,提供了若干可以直接使用的组件,我们可以只使用它提供的组件而不用自己设计 UI 工具类框架:如jquery(pc端)/jquery mobile(移动端),虽然准确来说它们更是类库,但它们集成了有关 DOM操作,ajax交互,事件和动画的工具,能够帮助解决浏览器兼容,这里姑且当做框架 组织代码的框架:如angular,它不提供jquery一样(类似插件)的功能,它帮我们更好地组织

[前端框架搭建]requirejs+jquery+bootstarp+Angular的前端组合框架搭建详解(1)-----框架的引入与选择

在园子里晃了两年多,已经从小白变成了小白白. 这个框架的背景是这样的,公司本身有一套自己的框架,但是由其他部门维护,部门想自己弄一套框架,由自己的人来搞. 刚刚调到架构的我,成功的中枪. 废话少说,我们开始 -----------------------------------------------我是华丽的分割线--------------------------------------------------------------------- 各框架的使用与原因,每一个部分都有他必要存

淘宝首页 图片滑动切换效果 基于jQuery的animate方法实现

内容如题 <!doctype html> <html> <head> <meta charset="utf-8"> <style> img { height:400px; width:1250px; /*使用relative,才能使用left.top性质*/ position:relative; top:0px; left:0px; /*transition:left 0.5s;*/ } </style> <

《淘宝的Session框架》

分布式Session共享 使用Tair(key-value)存储session(其他:使用memcached存储session) 高并发下分布式问题 透明处理存储介质的故障转移 动态增删节点,减小“缓存颠簸”问题 保证数据在各个节点的分布均衡 Session 序列化和反序列化 BASE 策略 Eric A. Brewer 在 1988 年提出的 BASE 策略,即 Basically Available.Soft state.和Eventually consistent. 互联网大多数应用更强调

盘点淘宝、腾讯、百度内部使用的JavaScript库

提到JavaScript库,相信很多读者首先就会想到一系列著名的JavaScript库,例如jQuery.Dojo.YUI.Prototype.ExtJS.Google Closure等.这些都是由国外的组织或人员主持开发的,并且大都是开源项目,在中国大陆也受到了开发人员的普遍欢迎. 其实,在国内也存在着一些比较优秀的前端开发框架,并且也大多是开源的,这里以腾讯.淘宝和百度使用的JavaScript前端开发框架为例进行介绍. 腾讯-JX 腾讯内部使用的前端开发框架,名为JX,由腾讯的Web前端团

淘宝技术这十年 第七章

? ? 正明 ? ? ? ? ? ? 博士期间开发了开源LVS,2000~2006年在国防科大教书:08年进淘宝,做LVS+HAproxy的普及,现在负责CDN系统的改良工作 : ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 毕玄 06年加入淘宝,负责淘宝的高性能服务框架,著作<OSGi原理与最佳实践>,推广OSGi在中国的应用: ? ? ? ? 看看他的每日时间分配:代码3小时.剩下来很多时间看技术文章或图书,每隔一段时间跳出来想想将来干什么好: ? ? 作为淘宝晋

[读书笔记]《淘宝技术这十年》

摘录自:http://www.cnblogs.com/me115/p/3545054.html 内容目录: 淘宝的升级路线 淘宝创新的技术 从牛人身上看到的 这本书很有趣,故事叙述好玩,且价值颇高: 它让更多人了解并熟悉淘宝,让我们近距离观察大公司成长过程中遇到的问题: 我将从三个方面来做这个概要版的读书笔记: 淘宝的升级路线叙述了淘宝的成长路线,如果能引起大家的兴趣,那最好,书中有详实有味的数据供人品味: 淘宝创新的技术一节总结淘宝在壮大的道路中所创造的技术,其实很多在我们的日常应用中都能找到

淘宝整体架构

一应用无状态(淘宝session框架) 假如在session中保存了大量与客户端的状态信息,保存状态信息的server宕机时 通常通过集群解决,不仅有负载均衡,更重要的是要有失效恢复failover tomcat用集群节点广播复制,jboss用配对复制等session状态复制策略,但严重影响系统的伸缩性,不能通过增加更多的机器达到良好的水平伸缩 因为集群节点间session通信随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,要保证应用无状态,这样集群中的各个节点来说都是相同的,使系统更好

淘宝高性能可伸缩平台架构简介 (转)

一 应用无状态(淘宝session框架) 假如在session中保存了大量与客户端的状态信息,保存状态信息的server宕机时 通常通过集群解决,不仅有负载均衡,更重要的是要有失效恢复failover tomcat用集群节点广播复制,jboss用配对复制等session状态复制策略,但严重影响系统的伸缩性,不能通过增加更多的机器达到良好的水平伸缩 因为集群节点间session通信随着节点的增多而开销增大,因此要想做到应用本身的伸缩性,要保证应用无状态,这样集群中的各个节点来说都是相同的,使系统更