SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Downloaden Sie, um offline zu lesen
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: 数据与控制逻辑

Weitere ähnliche Inhalte

Was ist angesagt?

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

Was ist angesagt? (6)

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

Andere mochten auch

Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...
Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...
Catering Kuruluşları için HACCP - ISO 22000 Standardına Bir Karar Destek Sist...Özcan Çavuşoğlu, Ph.D.(Cand.)
 
Do You Framework.s01.e02.kissy dpl 设计
Do You Framework.s01.e02.kissy dpl 设计Do You Framework.s01.e02.kissy dpl 设计
Do You Framework.s01.e02.kissy dpl 设计lanlancamp
 
Legal Tech Camp 2012 - Sky Analytics Presentation
Legal Tech Camp 2012 - Sky Analytics PresentationLegal Tech Camp 2012 - Sky Analytics Presentation
Legal Tech Camp 2012 - Sky Analytics Presentationskyanalytics
 
Ubermore services and offer
Ubermore services and offerUbermore services and offer
Ubermore services and offerFjord
 
2011 BMW of Macon 1 Series Coupe Macon GA
2011 BMW of Macon 1 Series Coupe Macon GA2011 BMW of Macon 1 Series Coupe Macon GA
2011 BMW of Macon 1 Series Coupe Macon GABMW of Macon Georgia
 
Ubermore 2011 sample work
Ubermore 2011 sample workUbermore 2011 sample work
Ubermore 2011 sample workFjord
 

Andere mochten auch (15)

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

Ähnlich wie Kissy component model

Kissy design
Kissy designKissy design
Kissy designyiming he
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型keelii
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四yiditushe
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文banq jdon
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发leneli
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验QLeelulu
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层yiditushe
 
前端开发之Js
前端开发之Js前端开发之Js
前端开发之Jsfangdeng
 
高粒度模块化的前端开发
高粒度模块化的前端开发高粒度模块化的前端开发
高粒度模块化的前端开发iddcn
 
Flex 4.5 action custom component development
Flex 4.5 action custom component developmentFlex 4.5 action custom component development
Flex 4.5 action custom component developmentjexchan
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aksRoberson Liou
 
JavaScript Advanced Skill
JavaScript Advanced SkillJavaScript Advanced Skill
JavaScript Advanced Skillfirestoke
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训flynofry
 

Ähnlich wie Kissy component model (20)

Kissy design
Kissy designKissy design
Kissy design
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型
 
前端测试
前端测试前端测试
前端测试
 
前端测试
前端测试前端测试
前端测试
 
JS2
JS2JS2
JS2
 
Vue.js
Vue.jsVue.js
Vue.js
 
由一个简单的程序谈起--之四
由一个简单的程序谈起--之四由一个简单的程序谈起--之四
由一个简单的程序谈起--之四
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
JdonFramework中文
JdonFramework中文JdonFramework中文
JdonFramework中文
 
使用kslite支持第三方内容开发
使用kslite支持第三方内容开发使用kslite支持第三方内容开发
使用kslite支持第三方内容开发
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
Node.js开发体验
Node.js开发体验Node.js开发体验
Node.js开发体验
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层
 
前端开发之Js
前端开发之Js前端开发之Js
前端开发之Js
 
高粒度模块化的前端开发
高粒度模块化的前端开发高粒度模块化的前端开发
高粒度模块化的前端开发
 
Flex 4.5 action custom component development
Flex 4.5 action custom component developmentFlex 4.5 action custom component development
Flex 4.5 action custom component development
 
2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks2023-netconf-deploy-azure-function-with-KEDA-on-aks
2023-netconf-deploy-azure-function-with-KEDA-on-aks
 
JavaScript Advanced Skill
JavaScript Advanced SkillJavaScript Advanced Skill
JavaScript Advanced Skill
 
Mybatis学习培训
Mybatis学习培训Mybatis学习培训
Mybatis学习培训
 
Mvc
MvcMvc
Mvc
 

Mehr von yiming he

kissy 1.5 progress
kissy 1.5 progresskissy 1.5 progress
kissy 1.5 progressyiming he
 
kissy at alibaba
kissy at alibabakissy at alibaba
kissy at alibabayiming he
 
kissy modularization part2
kissy modularization part2kissy modularization part2
kissy modularization part2yiming he
 
kissy modularization part1
kissy modularization part1kissy modularization part1
kissy modularization part1yiming he
 
KISSY @ 2013-2
KISSY @ 2013-2KISSY @ 2013-2
KISSY @ 2013-2yiming he
 
KISSY 1.4.0 released
KISSY 1.4.0 releasedKISSY 1.4.0 released
KISSY 1.4.0 releasedyiming he
 
callSuper in kissy
callSuper in kissycallSuper in kissy
callSuper in kissyyiming he
 
KISSY XTemplate
KISSY XTemplateKISSY XTemplate
KISSY XTemplateyiming he
 
Introduction to kissy for adc 2013
Introduction to kissy for adc 2013Introduction to kissy for adc 2013
Introduction to kissy for adc 2013yiming he
 
Kissy component system
Kissy component systemKissy component system
Kissy component systemyiming he
 
KISSY@2013.05
KISSY@2013.05KISSY@2013.05
KISSY@2013.05yiming he
 
kissy@2013.03
kissy@2013.03 kissy@2013.03
kissy@2013.03 yiming he
 
KISSY 1.3-released
KISSY 1.3-releasedKISSY 1.3-released
KISSY 1.3-releasedyiming he
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3yiming he
 
Kissy in-progress
Kissy in-progressKissy in-progress
Kissy in-progressyiming he
 
Kissy dpl-practice
Kissy dpl-practiceKissy dpl-practice
Kissy dpl-practiceyiming he
 
编辑器设计2
编辑器设计2编辑器设计2
编辑器设计2yiming he
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 2
KISSY Editor Design 2yiming he
 

Mehr von yiming he (20)

kissy 1.5 progress
kissy 1.5 progresskissy 1.5 progress
kissy 1.5 progress
 
kissy at alibaba
kissy at alibabakissy at alibaba
kissy at alibaba
 
kissy modularization part2
kissy modularization part2kissy modularization part2
kissy modularization part2
 
kissy modularization part1
kissy modularization part1kissy modularization part1
kissy modularization part1
 
KISSY @ 2013-2
KISSY @ 2013-2KISSY @ 2013-2
KISSY @ 2013-2
 
KISSY 1.4.0 released
KISSY 1.4.0 releasedKISSY 1.4.0 released
KISSY 1.4.0 released
 
callSuper in kissy
callSuper in kissycallSuper in kissy
callSuper in kissy
 
KISSY XTemplate
KISSY XTemplateKISSY XTemplate
KISSY XTemplate
 
Introduction to kissy for adc 2013
Introduction to kissy for adc 2013Introduction to kissy for adc 2013
Introduction to kissy for adc 2013
 
Kissy component system
Kissy component systemKissy component system
Kissy component system
 
KISSY@2013.05
KISSY@2013.05KISSY@2013.05
KISSY@2013.05
 
kissy@2013.03
kissy@2013.03 kissy@2013.03
kissy@2013.03
 
kissy@2013
kissy@2013kissy@2013
kissy@2013
 
KISSY 1.3-released
KISSY 1.3-releasedKISSY 1.3-released
KISSY 1.3-released
 
Simple kissy1.3
Simple kissy1.3Simple kissy1.3
Simple kissy1.3
 
Hujs 总结
Hujs 总结Hujs 总结
Hujs 总结
 
Kissy in-progress
Kissy in-progressKissy in-progress
Kissy in-progress
 
Kissy dpl-practice
Kissy dpl-practiceKissy dpl-practice
Kissy dpl-practice
 
编辑器设计2
编辑器设计2编辑器设计2
编辑器设计2
 
KISSY Editor Design 2
KISSY Editor Design 2KISSY Editor Design 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: 数据与控制逻辑