SlideShare a Scribd company logo
KISSY Component Model

            组件模型
                yiminghe@gmail.com
阶段1
   代表: Suggest
代码采样
   //默认配置
    var defaultConfig={};
    function Suggest(config){
    S.mix(config,defaultConfig,false);
    //初始化
    }
    //功能
    S.augment(Suggest,EventTarget,{});
阶段1特点


 单类单文件
 逻辑 (数据,控制,渲染)集中
 维护性不佳
阶段2
   代表:Switchable
代码采样
   ------------switchable.js
    //主要逻辑
    function Switchable(){}


    ------------switchable-plugin.js
    //插件逻辑
    function SwitchPlugin(){}


    ------------widge-tab.js
    //扩展逻辑
    function Tab(){}
    S.extend(Tab,Switchable);
阶段2特点

 总体逻辑初步文件分离.
 单个逻辑功能(数据,控制,渲染)集
  中.
 分离机制不能被其他组件公用,仅适合
  自身.
阶段3

   代表:无

   中间阶段

   Inspired by yui3 ,use base/attribute
代码采样
   function Component(){
     this.on("afterXChange",this.afterXChange,this);
    }
    Component.ATTRS={
     x:{
     getter:function(){}
     }
    };
    S.extend(Component,S.Base,{
     afterXChange:function(){}
    });
    //----------------- use
    new Component().set("x",1);
    new Component().get("x");
阶段3特点

   完善的属性管理机制
   组件状态同 dom 解耦
   数据与渲染逻辑分离
   自动状态数据同步



   Refer:http://goo.gl/if8k9
阶段4
   代表:Overlay using UIBase
代码采样
   var Component=UIBase.create(Parent,['MixComponent'],{
     initializer:function(){},
     _uiSetX:function(){},
     renderUI:function(){},
     bindUI:function(){},
     //syncUI:function(){}
     destructor:function(){}
    },{
     ATTRS:{
          x:{}                        可以声明属性特征
     },
     HTML_PARSER:{
          yEl:".cls"                 从html中获取组件属性
     }
    });
阶段4特点


 自动属性变化关联
 生命周期管理
 扩展 mixin 支持




   Refer: http://goo.gl/sgvXP
阶段5
   代表:menu,menubutton

   Component , MVC 分离
ModelControl
   ModelControl=UIBase.create([UIBase.Box],{
    renderUI:function(){//通知view和子组件view渲染},
    bindUI:function(){//注册常用dom事件},
    destructor:function(){//销毁自己以及子组件}
    },{
    ATTRS:{
          view://默认渲染层,取构造器.DefaultRender
          children://子组件
          parent://父组件
    }
    })
Render
   仅控制渲染盒子,申明一些默认属性
   var Render =
    UIBase.create([UIBase.Box.Render], {}, {
    ATTRS:{
        //从 maskup 中渲染
        srcNode:{},
        //组件 CSS class 前缀
        prefixCls:{ value:“” },
        //是否禁用
        disabled:{ value:false}
    }
    });
定制组件
//----------------- render.js
    var ComponentRender=UIBase.create(Component.Render,[...],{
      renderUI:function(){},//渲染
      },{
            HTML_PARSER:{ yEl:function(){} } //markup 中渲染
    });


//----------------- modelcontrol.js
    var Component=UIBase.create(Component.ModelControl,[...],{
      bindUI:function(){},
      _handleClick:function(){},//override 点击时操作
      _uiSetX:function(){//处理逻辑,转发 view}
      },{
      {
            ATTRS:{x:{}},
            DefaultRender:ComponentRender
      }
    });
使用组件
   var comp=new Component({});//根据配置初始组件




   comp.addChild(new SubComponent({}))//添加子组件






   comp.render(); //渲染组件,开始运作
阶段5特点

 UIBase MVC 逻辑分离
 Render : 渲染逻辑
 ModelControl: 数据与控制逻辑

More Related Content

PDF
Kissy模块化实践
PDF
Slide 20120322
PPT
Structs2簡介
PPTX
J engine -构建高性能、可监控的前端应用框架
PPTX
J engine -构建高性能、可监控的前端应用框架
PPTX
前端MVC之backbone
PDF
Spring 2.x 中文
PPT
第十期 阿甘Javascript开发思想(入门篇)
Kissy模块化实践
Slide 20120322
Structs2簡介
J engine -构建高性能、可监控的前端应用框架
J engine -构建高性能、可监控的前端应用框架
前端MVC之backbone
Spring 2.x 中文
第十期 阿甘Javascript开发思想(入门篇)

What's hot (6)

PDF
视图模式
PDF
Template mb-kao
PPT
Nginx使用和模块开发
PPT
MySQL基础技能与原理——基本原理
PDF
Jdbc中驱动加载的过程分析(上)
DOC
Spring入门纲要
视图模式
Template mb-kao
Nginx使用和模块开发
MySQL基础技能与原理——基本原理
Jdbc中驱动加载的过程分析(上)
Spring入门纲要
Ad

Viewers also liked (15)

DOC
Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...
PPTX
Do You Framework.s01.e02.kissy dpl 设计
PDF
95ZJ_FR.PDF
PDF
Legal Tech Camp 2012 - Sky Analytics Presentation
PDF
8095whitepaper
PPT
Sart Av2
DOCX
Projek softskill
PDF
Windbooster system - brochure rev.2 (en)
PDF
Ubermore services and offer
PDF
2011 BMW of Macon 1 Series Coupe Macon GA
PPTX
Scott monty
PPT
Cost management model
PDF
The social profile
PPTX
Ubermore 2011 sample work
PPTX
Ruralppt
Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...
Do You Framework.s01.e02.kissy dpl 设计
95ZJ_FR.PDF
Legal Tech Camp 2012 - Sky Analytics Presentation
8095whitepaper
Sart Av2
Projek softskill
Windbooster system - brochure rev.2 (en)
Ubermore services and offer
2011 BMW of Macon 1 Series Coupe Macon GA
Scott monty
Cost management model
The social profile
Ubermore 2011 sample work
Ruralppt
Ad

Similar to Kissy component model (12)

PDF
KISSY_Component
KEY
Flex 4.5 action custom component development
PPT
基于YUI3的组件开发
PPTX
YUI介绍和使用YUI构建web应用
PDF
mixin based component infrastructure
PDF
Kissy简介
PPTX
PDF
Kissy design
PDF
旺铺前端设计和实现
PDF
Yui3简介
PDF
D2-ETao-show
PPT
前端开发之Js
KISSY_Component
Flex 4.5 action custom component development
基于YUI3的组件开发
YUI介绍和使用YUI构建web应用
mixin based component infrastructure
Kissy简介
Kissy design
旺铺前端设计和实现
Yui3简介
D2-ETao-show
前端开发之Js

More from yiming he (20)

PDF
kissy 1.5 progress
PDF
kissy at alibaba
PDF
kissy modularization part2
PDF
kissy modularization part1
PDF
KISSY @ 2013-2
PDF
KISSY 1.4.0 released
PDF
callSuper in kissy
PDF
KISSY XTemplate
PDF
Introduction to kissy for adc 2013
PDF
Kissy component system
PDF
KISSY@2013.05
PDF
kissy@2013.03
PDF
kissy@2013
PDF
KISSY 1.3-released
PDF
Simple kissy1.3
PDF
Hujs 总结
PDF
Kissy in-progress
PDF
Kissy dpl-practice
PDF
编辑器设计2
PDF
KISSY Editor Design 2
kissy 1.5 progress
kissy at alibaba
kissy modularization part2
kissy modularization part1
KISSY @ 2013-2
KISSY 1.4.0 released
callSuper in kissy
KISSY XTemplate
Introduction to kissy for adc 2013
Kissy component system
KISSY@2013.05
kissy@2013.03
kissy@2013
KISSY 1.3-released
Simple kissy1.3
Hujs 总结
Kissy in-progress
Kissy dpl-practice
编辑器设计2
KISSY Editor Design 2

Kissy component model

  • 1. KISSY Component Model 组件模型 yiminghe@gmail.com
  • 2. 阶段1  代表: Suggest
  • 3. 代码采样  //默认配置 var defaultConfig={}; function Suggest(config){ S.mix(config,defaultConfig,false); //初始化 } //功能 S.augment(Suggest,EventTarget,{});
  • 4. 阶段1特点  单类单文件  逻辑 (数据,控制,渲染)集中  维护性不佳
  • 5. 阶段2  代表:Switchable
  • 6. 代码采样  ------------switchable.js //主要逻辑 function Switchable(){} ------------switchable-plugin.js //插件逻辑 function SwitchPlugin(){} ------------widge-tab.js //扩展逻辑 function Tab(){} S.extend(Tab,Switchable);
  • 7. 阶段2特点  总体逻辑初步文件分离.  单个逻辑功能(数据,控制,渲染)集 中.  分离机制不能被其他组件公用,仅适合 自身.
  • 8. 阶段3  代表:无  中间阶段  Inspired by yui3 ,use base/attribute
  • 9. 代码采样  function Component(){ this.on("afterXChange",this.afterXChange,this); } Component.ATTRS={ x:{ getter:function(){} } }; S.extend(Component,S.Base,{ afterXChange:function(){} }); //----------------- use new Component().set("x",1); new Component().get("x");
  • 10. 阶段3特点  完善的属性管理机制  组件状态同 dom 解耦  数据与渲染逻辑分离  自动状态数据同步  Refer:http://goo.gl/if8k9
  • 11. 阶段4  代表:Overlay using UIBase
  • 12. 代码采样  var Component=UIBase.create(Parent,['MixComponent'],{ initializer:function(){}, _uiSetX:function(){}, renderUI:function(){}, bindUI:function(){}, //syncUI:function(){} destructor:function(){} },{ ATTRS:{ x:{} 可以声明属性特征 }, HTML_PARSER:{ yEl:".cls" 从html中获取组件属性 } });
  • 13. 阶段4特点  自动属性变化关联  生命周期管理  扩展 mixin 支持  Refer: http://goo.gl/sgvXP
  • 14. 阶段5  代表:menu,menubutton  Component , MVC 分离
  • 15. ModelControl  ModelControl=UIBase.create([UIBase.Box],{ renderUI:function(){//通知view和子组件view渲染}, bindUI:function(){//注册常用dom事件}, destructor:function(){//销毁自己以及子组件} },{ ATTRS:{ view://默认渲染层,取构造器.DefaultRender children://子组件 parent://父组件 } })
  • 16. Render  仅控制渲染盒子,申明一些默认属性  var Render = UIBase.create([UIBase.Box.Render], {}, { ATTRS:{ //从 maskup 中渲染 srcNode:{}, //组件 CSS class 前缀 prefixCls:{ value:“” }, //是否禁用 disabled:{ value:false} } });
  • 17. 定制组件 //----------------- render.js var ComponentRender=UIBase.create(Component.Render,[...],{ renderUI:function(){},//渲染 },{ HTML_PARSER:{ yEl:function(){} } //markup 中渲染 }); //----------------- modelcontrol.js var Component=UIBase.create(Component.ModelControl,[...],{ bindUI:function(){}, _handleClick:function(){},//override 点击时操作 _uiSetX:function(){//处理逻辑,转发 view} },{ { ATTRS:{x:{}}, DefaultRender:ComponentRender } });
  • 18. 使用组件  var comp=new Component({});//根据配置初始组件  comp.addChild(new SubComponent({}))//添加子组件   comp.render(); //渲染组件,开始运作
  • 19. 阶段5特点  UIBase MVC 逻辑分离  Render : 渲染逻辑  ModelControl: 数据与控制逻辑