上一节中用sencha工具自动创建了一个项目,并且可以在浏览器中查看。现在我们来看看js类加载过程。如下图所示:

1、首先:浏览器中输入 localhost:1841 ,调用 index.html;

 1 <!DOCTYPE HTML>
 2 <html>
 3 <head>
 4     <meta charset="UTF-8">
 5
 6     <title>app</title>
 7
 8     <!-- The line below must be kept intact for Sencha Cmd to build your application -->
 9     <script id="microloader" type="text/javascript" src="bootstrap.js"></script>
10
11 </head>
12 <body></body>
13 </html>

在这里面只引入了一个文件:bootstrap.js。这是一个神奇的文件,他根据配置文件bootstrap.json来设置extjs的类的调用路径、引入css,最后再根据配置文件中的信息,加载app.js。这个文件只要知道这些功能就行了,要了解具体的内部实现,可以去搜索一下相关文章。

2、app.js文件的说明

1 Ext.application({
2     name: 'app',//应用的名称app
3
4     extend: 'app.Application',       //继承自app.Application,这个文件是 app/Application.js
5
6     autoCreateViewport: 'app.view.main.Main'  //自动创建的Viewport的类名,文件在 app/view/main/Main.js
7
8 });

上面的类中会根据类加载的设置信息,自动为类 app.Application加载文件 /app/Application.js,同样也为app.view.main.Main类找到js文件并加载。

3、Application.js文件

 1 Ext.define('app.Application', {
 2     extend : 'Ext.app.Application',
 3
 4     name : 'app',
 5     views : [], // MVC用到的view
 6     controllers : ['Root'
 7     // MVC控制器的名称,会自动到 /app/controller下去加载同名的js文件
 8     // 对于Root,会去自动加载 /app/Controller/Root.js 这个文件
 9     ],
10     stores : [],
11     launch : function() {
12         // 需要执行的语句可以加在此处
13     }
14 });

4、Main.js 文件

 1 Ext.define('app.view.main.Main', {
 2     extend: 'Ext.container.Container',
 3
 4     xtype: 'app-main',
 5
 6     controller: 'main',
 7         //MVVM架构的控制器的名称,会在当前路径中根据‘Main’ + Controller 来确定文件名
 8         //这个我没找到其他任何可以自动加载MainController.js的依据,只能作上面的判断了
 9     viewModel: {
10         type: 'main'
11         //MVVM架构的viewModel的类型,会在当前路径中根据‘Main’ + Model 来确定文件名
12     },
13
14     layout: {
15         type: 'border'            //系统的主页面的布局
16     },
17
18     items: [{
19         xtype: 'panel',
20         bind: {
21             title: '{name}'
22         },
23         region: 'west',        //左边面板
24         html: '<ul><li>This area is commonly used for navigation, for example, using a "tree" component.</li></ul>',
25         width: 250,
26         split: true,
27         tbar: [{
28             text: 'Button',
29             handler: 'onClickButton'
30         }]
31     },{
32         region: 'center',        //中间面版
33         xtype: 'tabpanel',
34         items:[{
35             title: 'Tab 1',
36             html: '<h2>Content appropriate for the current navigation.</h2>'
37         }]
38     }]
39 });

上面的类是继承自Container的一个容器类,这个类使用了extjs5的mvvm的新特性,

1 controller: 'main',
2     //MVVM架构的控制器的名称,会在当前路径中根据‘Main’ + Controller 来确定文件名
3     //这个我没找到其他任何可以自动加载MainController.js的依据,只能作上面的判断了
4 viewModel: {
5     type: 'main'
6     //MVVM架构的viewModel的类型,会在当前路径中根据‘Main’ + Model 来确定文件名
7 },

上面的属性controller表示当前Main类的控制器为"main",这个类里没有引用控制器的语句,因此控制器的类名可能是有其默认的加载规则,应该是在当前路径中加载“Main”+"Controller.js",这个文件作为控制器。viewModel属性定义了VM的类型,其加载类的规则和上面控制器是一样的。

由于此类是作为一个 autoCreateViewport 属性被加载,加载完成后会立即生成一个实例,并渲染,就是我们看到的网页。

extjs中类的动态加载机制很灵活,这里也不能全部讲到,有不明白的可以查找相关资料。在用sencha cmd 对js 进行编译以后,会将所有的js ,包括用户手工写的和extjs5 sdk中用到的类全部放在一个文件中,发布的时候就只有一个大的js文件。

转载于:https://www.cnblogs.com/isonre/p/4703832.html

extjs5(03--项目中文件的加载过程)相关推荐

  1. vue项目中 img标签加载失败方法,onerror事件的两种方法

    vue项目中 img标签加载失败方法 ?css 第一种方法 第二种方法 本人写的第一篇文章,希望对你有帮助 第一种方法 < img src="123" :οnerrοr=&q ...

  2. vue项目中 img标签加载失败(404)方法,@error事件

    vue项目中 img标签加载失败方法,@error事件 @error="defImg" <img src="123" @error="defIm ...

  3. Java虚拟机中 类的加载过程

    Java中 类的加载过程 例如下面的一段简单的代码 public class HelloWorld {public static void main(String[] args) {System.ou ...

  4. 高通平台dtb文件的加载过程

    高通平台dtb文件的加载过程 高通平台对dts的两种打包方式 zImage-dtb dt.img zImage-dtb方式 zImage-dtb的编译 二进制文件查看 lk的加载过程代码分析 dt.i ...

  5. EXE文件的加载过程

    一个microsoft的.exe程序文件的启动过程 2009-06-16 14:54 2101人阅读 评论(0) 收藏 举报 microsoftmfcwindowsshelldll数据结构 学习win ...

  6. react项目中使用esri-loader加载天地图

    1.在项目中安装esri-loader npm install esri-loader // or yarn add esri-loader 2.加载代码如下: 代码是基于react hook编写: ...

  7. SpringBoot项目中静态资源加载失败,那可能是自定义配置类继承了WebMvcConfigurationSupport这个类

    1.跟着视频课学SpringBoot,自己的一个html登录页面就是在浏览器中渲染不出来效果,很郁闷.我的项目结构如下: 2.想要打开login.html页面,该页面用到了静态资源中的css文件及sv ...

  8. actionscript(as) 项目中 使用 fla 加载 fla

    我见到很多人都是直接就new fla里面的东西,但是我至今没有到那是怎么做到的,有网友了解,烦请留言告知. 我现在找到的方法是 在类里定义一个private var baLoader:Loader; ...

  9. spring boot中mysql驱动加载过程

    1.我们一般选择的Datasoure工具类  private static final String[] DATA_SOURCE_TYPE_NAMES = new String[] { "o ...

最新文章

  1. mongoDB的常用语法
  2. 供应链金融服务平台:应收、预付和存货融资业务
  3. 【原创】新手入门一篇就够:从零开发移动端IM
  4. Algorithm:多维数组和矩阵
  5. oo第一次博客-三次表达式求导的总结与反思
  6. 计算机学习路线推荐(初稿)
  7. try...catch...finally的陷阱——加锁的线程开发经验分享
  8. Unix网络编程---第一次作业
  9. 6大黑科技app合集,绝对让你大开眼界
  10. 从python爬虫以及数据可视化的角度来为大家呈现“227事件”后,肖战粉丝的数据图
  11. Java小白之编写:计算个税的程序
  12. HDU 3179 二叉搜索树(树的建立)
  13. 10个小窍门,让你轻松准确搜索(转)
  14. C#简单使用ManagedWifi
  15. 《Unity Shader入门精要》彩图版免费分享~~~~~
  16. 李开复写给女孩子们的
  17. 微信共享停车场小程序开发设计方案
  18. FusionCharts使用实例
  19. SAS学习笔记5:删除字符串空格-left/right/trim/strip/compress/compbl等函数的比较
  20. 传奇GeeM2引擎配置生成登陆器配置详细图文教程

热门文章

  1. 网站服务器上加入三层开发的网站错误解决
  2. php解析url的三种方法举例
  3. [存档]获取通讯录信息并写到SD卡上
  4. 乘法器之四( 乘加器(Sum of multiplication))
  5. Excel中根据单元格背景色求和
  6. java 蓝桥杯算法训练 快速排序
  7. 考清华计算机研究生数学看什么,一位考上清华计算机研究生的悲壮历程(数学考了满分).doc...
  8. 计算机考研在线题库,考研全题库电脑版
  9. mysql jdbc 表结构_JDBC操作表:JDBC修改表结构
  10. (98)利用函数function实现半字节加法功能,面试必问(二十二)(第20天)