SlideShare a Scribd company logo
1 of 20
Download to read offline
基于 Mixin 的组件设计

    承玉(何一鸣)
大纲
 继承


 多继承


 Mixin


 构造与析构


 组件生命周期


 组件编写
继承 (inheritance)
 一种划分和重用代码的手段
 Class inheritance:对象由类定义,则继承发生在
  类与类之间。编译期确定
 层次注意:yo-yo problem




 最终目的:新对象重用已有对象的能力
基于原型的继承
 Class-less,prototype-oriented,delegation


 var cf=new CF();     cf.__proto__
多继承(multiple inheritance)
 从多个类中复用功能。
 优点:
  功能分解,便于多次复用
  设计简洁,符合逻辑
 缺点:
  名字空间冲突,增加程序复杂度


 Worker : Human
 Musican : Human ,Worker
 StreetMusician : Human ,Musician ,Worker
mixin
 代表提供实现方法的接口。搜集功能的一种方式,
 多个 mixins 混合起来形成新类。

 可以通过多继承获得 mixins 的功能。


 Mixin 不涉及传统继承构造以及析构链的处理过程,
 只设置功能混合。
构造与析构
 多继承机制 = mixins + contructor + destructor


 扩展类概念
 extension = mixin methods + constructor +
 destructor

 获得 mixin 的功能同时,还要处理其构造器与析
 构器。
组件生命周期
 一般的组件
基于 mixin 分解
 Base ext component




 通过事件实现 AOP
使用 -扩展编写
 1.构造器中进行初始化


 2. 定义属性
  .ATTRS={   xy:{} } ,详见使用属性机制

 3. 定义属性对应的UI处理函数
  _uiSetXy


 4. 定义dom节点获取方式
  .HTML_PARSER={
    X : val
  }
Html_parser 取值
  选择器
    相对当前容器的选择器字符串
      StdMod.HTML_PARSER={
       o header: “.ks-stdmod-header”
      }


  函数
    以当前容器为参数的函数返回值
      StdMod.HTML_PARSER={
       o Header:function(el){return el.one(“.ks-
         stdmod-header”);}
      }
 5. 定义析构函数

  Box-ext.js


    __destructor :function(){
        this.get(“el”).remove();
    }
 6. 介入组件生命周期
  定义 __ 方法


  __renderUI : 渲染
  __bindUI : 绑定事件
  __syncUI : 更具设置更新UI状态
使用-主组件编写
 var Dialog =
 Base.create(Overlay,[S.Ext.StdMod …],
 原型属性,静态属性);

 Dialog :主组件


 Overlay : 继承主组件


 [S.Ext…] :扩展组件
原型属性
 initializer:
   取代构造器,负责自身初始化


 _uiSetXy
   当前属性与UI的同步


 Destructor:
   销毁自身,忽略其他依赖项
 介入组件周期,不加 __


  renderUI
  bindUI
  syncUI
静态属性

 ATTRS:{}
   定义组件自身的属性,以及覆盖父类以及扩展类的同
    名属性定义
   ATTRS:{
    value: //值或者以自身为this的函数执行值
    setter:function(val){} //返回值作为真实设置值
    getter:function(val){} //返回值作为真实返回值
  }
主组件与扩展组件区别
 1.主组件初始化定义在 initializer ,扩展组件定义
 在 构造器

 2.主组件析构定义在 destructor,扩展组件析构定
 义在 __destructor

 3.方法中可通过superclass 引用继承的主组件原型,
 扩展组件(mixins)之间互相不知道,无法引用

 3.组件周期加 __ , renderUI  __renderUI
例子
 Dialog – Overlay


 构造析构顺序?
结束
 结束!

More Related Content

Similar to mixin based component infrastructure

Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非Tony Deng
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code QualityJoseph Chiang
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of techYUCHENG HU
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾Wu tianhao
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试lydiafly
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典ma tao
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and nodePeter Yi
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
Js高级技巧
Js高级技巧Js高级技巧
Js高级技巧fool2fish
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程dyzm_2000
 
Kissy component model
Kissy component modelKissy component model
Kissy component modelyiming he
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starteryiming he
 
Uliweb设计分享
Uliweb设计分享Uliweb设计分享
Uliweb设计分享modou li
 
第1讲 开始编写程序
第1讲 开始编写程序第1讲 开始编写程序
第1讲 开始编写程序ruandao
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典yiditushe
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2luolonghao
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001rainx1982
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 

Similar to mixin based component infrastructure (20)

Javascript之昨是今非
Javascript之昨是今非Javascript之昨是今非
Javascript之昨是今非
 
JavaScript Code Quality
JavaScript Code QualityJavaScript Code Quality
JavaScript Code Quality
 
107个常用javascript语句 oss 计算技术 - ossez info of tech
107个常用javascript语句   oss 计算技术 - ossez info of tech107个常用javascript语句   oss 计算技术 - ossez info of tech
107个常用javascript语句 oss 计算技术 - ossez info of tech
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
Ecma script edition5-小试
Ecma script edition5-小试Ecma script edition5-小试
Ecma script edition5-小试
 
Java面试宝典
Java面试宝典Java面试宝典
Java面试宝典
 
180518 ntut js and node
180518 ntut js and node180518 ntut js and node
180518 ntut js and node
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
Js高级技巧
Js高级技巧Js高级技巧
Js高级技巧
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程
 
Kissy component model
Kissy component modelKissy component model
Kissy component model
 
KISSY for starter
KISSY for starterKISSY for starter
KISSY for starter
 
Uliweb设计分享
Uliweb设计分享Uliweb设计分享
Uliweb设计分享
 
第1讲 开始编写程序
第1讲 开始编写程序第1讲 开始编写程序
第1讲 开始编写程序
 
Java程序员面试之葵花宝典
Java程序员面试之葵花宝典Java程序员面试之葵花宝典
Java程序员面试之葵花宝典
 
Kindeditor设计思路v2
Kindeditor设计思路v2Kindeditor设计思路v2
Kindeditor设计思路v2
 
Exodus2 大局观
Exodus2 大局观Exodus2 大局观
Exodus2 大局观
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 

More from 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
 

More from 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
 

mixin based component infrastructure