sguap框架-weblet执行流程

本文详细探讨了SGUAP框架中Weblet的执行流程,从请求接收、页面跳转到业务处理,深入分析了每个阶段的关键步骤和技术要点,帮助读者理解该框架的工作机制。
摘要由CSDN通过智能技术生成
一:index.jsp页面中的<mx:WebletContainer id="ownerContainer" webletID="owner" bundleName="plan"></mx:WebletContainer>标签解析为如下JavaScript代码
①var consunitEmployeeContainer = new mx.weblets.WebletContainer({ $e: $("#consunitEmployeeContainer"), webletID:"consunitEmployee", bundleName: "plan"});
②创建WebletContainer对象时自动调用me.endOfClass(arguments); 
③根据继承关系mx.weblets.WebletContainer->mx.views.ViewPort->mx.containers.Container->mx.controls.Control->MXComponent->MXObject
调用MXObject对象中的endOfClass方法

** 每个定义的类(组件)最后几乎都会自动调用me.endOfClass(arguments); 
该函数主要作用为初始化参数,该方法最终是依次调用MXObject和MXComponent中的me._(p_options),
然后依次按继承关系调用各类中的me.init(从当前调用对象所属类->MXObject中的me.init());

方法一:me.endOfClass = function(p_arguments)
{
   
    if (me.__class__.caller != $extend)
    {
        me._(p_arguments[0]);
    }
    return me;
};
me._(p_arguments[0])调用MXComponent中的me._方法
方法二:me._ = function(p_options)
{
   
    if (me.canConstruct())
    {
        // 此处先调用父类MXObject的_()方法,即方法三
        base._(p_options);

        //...此处省略AOP方法

        if (me.autoInit)
        {
            me.init();// 此处会根据继承关系分别调用WebletContainer、ViewPort、Container、Control、MXComponent中的me.init方法
        }
    }
};
父类MXObject中的me._方法,主要重要是初始化变量$e、webletID、bundleName的值
方法三:me._ = function(p_options)
{
   
    if (me.canConstruct())
    {
        if ($.isPlainObject(p_options))
        {
            var isEventDispatcher = typeof (me.on) == "function";
            for ( var key in p_options)
            {
                var option = p_options[key];
                // 如果是onXXX之类的方法(onload/onstart/onclick),则调用MXComponent.on方法用于创建MXEvent事件,并添加事件监听
                // 具体参见方法十六
                if (isEventDispatcher && typeof (me[key]) == "object"
                        && typeof (option) == "function"
                        && key.startsWith("on"))
                {
                    me.on(key.substr(2), option);
                }
                else
                {
                    me[key] = option;
                }

                option = null;
                p_options[key] = null;
                delete p_options[key];
            }               
        }
        me.constructed = true;

        p_options = null;
    }
};
方法四:WebletContainer中的me.init方法[47-72]
me.init = function()
{
   
    me.$e.addClass("webletContainer");//添加class样式webletContainer
    me.$e.empty();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值