extjs5(03--项目中文件的加载过程)

上一节中用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文件。

时间: 2024-08-09 07:12:31

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

跟我一起学extjs5(03--项目中文件的加载过程)

跟我一起学extjs5(03--项目中文件的加载过程) 上一节中用sencha工具自动创建了一个项目,并且可以在浏览器中查看.现在我们来看看js类加载过程.如下图所示: 1?首先:浏览器中输入 localhost:1841 ,调用 index.html; <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title>app</title> <!-- T

ELF文件的加载过程(load_elf_binary函数详解)--Linux进程的管理与调度(十三)

日期 内核版本 架构 作者 GitHub CSDN 2016-06-04 Linux-4.6 X86 & arm gatieme LinuxDeviceDrivers Linux进程管理与调度-之-进程的描述 加载和动态链接 从编译/链接和运行的角度看,应用程序和库程序的连接有两种方式. 一种是固定的.静态的连接,就是把需要用到的库函数的目标代码(二进制)代码从程序库中抽取出来,链接进应用软件的目标映像中: 另一种是动态链接,是指库函数的代码并不进入应用软件的目标映像,应用软件在编译/链接阶段并

QML中文件的加载(三种方法)

在这里小小总结一下QML文件中如何加载QML文件与JavaScript文件. 1.QML文件中加载JavaScript文件 语法: import <ModuleIdentifier> <Version.Number> [as <Qualiflier>] ModuleIdentifier为URL: Version.Number为版本号: Qualifier为自定义命名: 示例代码如下: Qml文件: 图一 Js文件 图二 注:将js文件引入后可直接调用里面的函数,自定义命

Spring项目中Properties不能加载多个的问题

A模块和B模块都分别拥有自己的Spring XML配置,并分别拥有自己的配置文件: A模块 A模块的Spring配置文件如下: Xml代码   <?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSch

SpringMVC项目中启动自加载Listener

package com.kuman.cartoon.listener; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; import o

Linux登录时/etc/profile、~/.bash_profile等几个文件的加载过程

关于登录linux时,/etc/profile.~/.bash_profile等几个文件的执行过程. 在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile. ~/.bash_login或 ~/.profile文件中的其中一个,执行的顺序为:~/.bash_profile. ~/.bash_login. ~/.profile.如果 ~/.bash_profile文件存在的话,一般还会执行 ~

web.xml被文件加载过程,各节点加载顺序总结

web.xml被文件加载过程,各节点加载顺序总结 博客分类: J2EE WebXMLSpringServletBean 今天2010-3-11日,上班无事,想来将web.xml项目描述文件的加载过程做个总结贴在这里,以备忘: web.xml加载过程(步骤): 1.启动WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener> 和 <context-param></context-param&

ExtJs中grid分页加载的问题

最近项目中遇到一个grid分页加载的问题,当按照条件查询数据后,数据数据在grid中分页显示,当点击翻页后grid的中显示第二页数据.此时更换查询条件后再次点击查询时,发现grid的下面分页信息栏中页码并不是1,而是上次翻到的页面. 这是因为以前在点击查询时调用的是store.load()方法,然后再load之前将参数添加进去. 如果想让每次查询时页面从1开始就要使用store的loadPage方法.使用该方法指定每次加载的页码是1 例如 record_store.loadPage(1,{ pa

Spring IOC bean加载过程

首先我们不要在学习Spring的开始产生畏难情绪.Spring没有臆想的那么高深,相反,它帮我们再项目开发中制定项目框架,简化项目开发.它的主要功能是将项目开发中繁琐的过程流程化,模式化,使用户仅在固定文件中增加特定标签并实现特定逻辑层的代码就能完成项目开发.下面我们来分析web项目启动时bean的初始化过程. 我们遵循类的依赖,引用关系来理清spring在这一过程中的架构和细节实现.java web项目入口在web.xml,Spring在此配置入口servlet完成bean的加载.Dispat