日期:2014-05-16  浏览次数:20439 次

EXT3中按照模块加载JS,提高应用程序的加载速度 。

说明:

Ext是一个强大的js类库,它提供了丰富的,非常漂亮的外观体验,成为众多界面层开发人员的追捧!其核心的组件基本覆盖了我们构建富客户端的常用的组件。

在B/C架构出来的都是基于web2.0,也即是One Application One Page (一个应用一个页面),这样如果你Web程序功能性过大,在加载JS的时候,会导致页面加载非常的慢,特别是的IE,Chrome和Firefox相对好点。以前在华为的时候,做一个小的项目管理系统,一开始没有考虑到很多东西,接到功能的时候就做,在初入系统的时候直接加载所有的JS(其中包括一些Ajax请求数据),一次的Seesion中也存了很多的数据,这个导致加载很慢。特别在数据超过1000条(一次性访问)或者用IE访问,需要4s的时间才能加载,初始加载7-8S左右。因为浏览器每次都需要解释这么多的js.

 

 

如何解决这个问题?

如下:

Ext.ns("App");
App.importJs = {
    MenuView: [__ctxPath + "/js/system/MenuView.js", __ctxPath + "/js/system/MenuForm.js", __ctxPath + "/js/system/MenuFunctionForm.js", __ctxPath + "/js/system/MenuUrlForm.js", __ctxPath + "/js/system/IconSelector.js"],
    
    UserJobView: [__ctxPath + "/js/system/UserJobView.js", __ctxPath + "/js/system/UserJobForm.js", __ctxPath + "/js/system/RelativeJobView.js", __ctxPath + "/js/system/RelativeJobForm.js", __ctxPath + "/js/system/RelativeUserView.js", __ctxPath + "/js/system/RelativeUserForm.js", __ctxPath + "/js/system/DepartmentForm.js", __ctxPath + "/js/system/UserJobDetailForm.js", __ctxPath + "/js/system/JobForm.js", __ctxPath + "/js/selector/UserSelector.js", __ctxPath + "/js/selector/JobSelector.js", __ctxPath + "/js/selector/DepSelector.js"],
    };
    


代码说明:在使用哪个模块时就调用哪个模块。

点击左边的菜单时,会根据其对应的Id来进行加载js.

以下为AppUtil.js中定义的按模块加载js,并且创建那个模块的对象
/**
 * Import Js
 * @return {}
 */
function $ImportJs(viewName,callback) {
    var b = document.getElementById(viewName+'-hiden');
    if (b != null) {
       var view = eval('new ' + viewName + '()');
       callback.call(this, view);
    } else {
       var jsArr = eval('App.importJs.' + viewName);
       ScriptMgr.load({
                  scripts : jsArr,
                  callback : function() {
                     Ext.DomHelper
                            .append(
                                   document.body,
                                   "<div id='"
                                          + viewName
                                          + "-hiden' style='display:none'></div>");
                     var view = eval('new ' + viewName + '()');
                     callback.call(this, view);
                  }
              });
    }
}


 

学习于man1900