博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何提高sencha的加载速度
阅读量:2144 次
发布时间:2019-04-30

本文共 2092 字,大约阅读时间需要 6 分钟。

我做的是基于HTML5的项目,在手机端浏览器中运行。当开发的模块越来越多时打包生成的app.js会越来越大,如何提高加载速度是后期增加新功能的关键

思路1、基础模块打包在一个app.js中 并且 运行其中的某个模块时实现类的动态加载 2、新增加的高级功能  不再打包到app.js中 而是实行动态加载文件的形式完成

架构如下

具体做法

     写一个公共controller,起到路由的作用:

Ext.define('Order.controller.redirectManage', {

    extend: 'Ext.app.Controller',
    requires: [
        'Ext.app.Route'
    ],
    config: {
        routes: {
            'redirectRefundDetail/:refundId': 'redirectRefundDetail',
            'redirectTradeDetail/:tid/:dt': 'redirectTradeDetail',
            'detail/:utilList/:tid': 'detail',
            'toRateManage/:obj': 'toRateManage',
            'toPersonalCenter/:param': 'toPersonalCenter',
            'menu2List/:param': 'menu2List'
        }
    },
    redirectRefundDetail: function(refundId) {
        var obj = {};
        obj.refundId = refundId;
        Order.app.loadController('Order.controller.RefundDetailManage',obj);
    },
    redirectTradeDetail: function(tid, dt) {
        var obj = {};
        obj.tid = tid;
        Order.app.loadController('Order.controller.TradeDetailManage',obj);
    },
    detail: function(utilList, tid) {
        var obj = {};
        obj.tid = tid;
        Order.app.loadController('Order.controller.TradeDetailManage',obj);
    },
    toRateManage: function(obj) {
        Order.app.loadController('Order.controller.rateManage',obj);
    },
    toPersonalCenter: function(param) {
        Order.app.loadController('Order.controller.PersonalCenter',param);
    },
    menu2List: function(param) {
        Order.app.loadController('Order.controller.TradeListManage',param);
    }
});

一个公共方法用来实例化controller

 loadController: function(controllerName, obj) {

   
        if (Ext.isEmpty(Order.app.getController(controllerName))) {
            var instances = Order.app.getControllerInstances(),
                controller = Ext.create(controllerName, {
                    application: Order.app
                });
          
          
            instances[controllerName]=controller;
            
          
            Order.app.setControllerInstances(instances);
          
            Order.app.setStores(controller.getStores());
            var classes=[];
            classes = classes.concat(controller.getModels().concat(controller.getViews()).concat(controller.getStores()));
            Ext.require(classes,function(){
                Order.app.instantiateStores();
                controller.toInit(obj);
            },Order.app);
           
        }else{
            Order.app.getController(controllerName).toInit(obj);
       
        }
    }

A,B,C等controller中包含一个toInit方法,用来初始化进入该模块

如下

    toInit: function(obj) {
        location.href="#menu2refund";
    }

   

  

你可能感兴趣的文章
TP5.1项目从windows的Apache服务迁移到linux的Nginx服务需要注意几点。
查看>>
win10安装软件 打开时报错 找不到 msvcp120.dll
查看>>
PHPunit+Xdebug代码覆盖率以及遇到的问题汇总
查看>>
PHPUnit安装及使用
查看>>
PHP项目用xhprof性能分析(安装及应用实例)
查看>>
composer安装YII
查看>>
Sublime text3快捷键演示
查看>>
sublime text3 快捷键修改
查看>>
关于PHP几点建议
查看>>
硬盘的接口、协议
查看>>
VLAN与子网划分区别
查看>>
Cisco Packet Tracer教程
查看>>
02. 交换机的基本配置和管理
查看>>
03. 交换机的Telnet远程登陆配置
查看>>
微信小程序-调用-腾讯视频-解决方案
查看>>
phpStudy安装yaf扩展
查看>>
密码 加密 加盐 常用操作记录
查看>>
TP 分页后,调用指定页。
查看>>
Oracle数据库中的(+)连接
查看>>
java-oracle中几十个实用的PL/SQL
查看>>