FNX 基础设施参考

让 FNX 每个模块更加明了。基础设施很重要。这可以作为一份参考,或一份整理。

每个类不得不提的方法和属性

Class
    Class.create(config)                            //Class作为父类。
    parent.extend(config)                           //也是执行Class.create,parent为父类
    someclass.implement(conifg)                     //便捷的绑定方法
    Class(Animal).extend(config)                    //转会为FNX Class类。
    config:
        Extends:                                    //继承某个类
        Implements                                  //从多个类混入原型
        Statics                                     //混入对象属性
    initialize                                      //初始化自动调用
    superclass                                      //访问父类原型方法

Events
    on                                              //绑定方法,支持同一事件绑定多个方法
    off                                             //移除事件,不同参数不同意义。
    trrigger                                        //触发事件,支持多个事件同时触发,用空格隔开
    mixTo

Attrs
    attrs{xxx:{getter:,setter:,readOnly:}}          //多种格式传入attrs,
                                                      内部将每一个属性处理为具有value,getter,setter,readOnly的对象
    on_ChangeXxx                                    //set的时候自动调用。内部会转化为change事件。
    get                                             //若初始化时传入getter,会调用getter。set同理
    set
    change                                          //如果有on_ChangeXxx,都将转化为change。
                                                      或着也可以手动触发change,对所有未触发change事件的属性全部触发一次
    initAttrs                                       //一般不需要覆盖。

Aspect
    before                                          //逻辑中使用event,不能直接调用,提供给base用。
    after
Base
    综合上面四个

Widget
    propsInAttrs: ['initElement', 'element', 'events']          //直接添加到实例上,转变成properties
    render                                                      //添加到dom中
    _onRenderA                                                  //属性改变时触发,
                                                                  当属性为null或undefined时触发。将来也是注册到change方法
    Events                                                      //events hash
    destroy                                                     //销毁
    element                                                     //每个Widget值对应一个element。
                                                                  实例化时传入,或由模板生成
    initProps                                                   //提供给子类,处理属性
    delegateEvents                                              //事件代理到this.element上
    setup                                                       //空函数,供子类覆盖
    Widget.autoRender = AutoRender.autoRender;
    Widget.autoRenderAll = AutoRender.autoRenderAll;
    query
    data-attr                                                   //DOM中书写,都将转化为属性。

回归,简述

Class
    提供简单OO,用最多的恐怕就是继承了。
    Implement,Extends的实现是不得不赞的。
Events
    DOM无关事件。好处太多。
    on,off支持同一事件多次绑定,将零散的函数整合到了一起。
Base
    拥有extend,implement,on,off,trigger,before,after,get,set,initAtts,change等方法。甚是强大。
    get,set不在多说,_onChangeXxx绑定属性改变时的函数,将来自动调用。
    before,after 切面编程。
Widget
    Base.extend建造,拥有Base所有方法。
    轻量级MVC支持。
    实例化时五个步骤。每一个方法都应该记得。
    可混入模板。建立组件时,Implements: Templatable 足以。
    FNX UI基础类。

注意

很多方法可以被子类覆盖,在覆盖的时候,考虑要不要调用父类同名方法。

如MyWidget.superclass.initAttrs.call(this, config);