版本说明:

Ext 4.2.1

cmd 5.0.3

1. sencha app refresh的作用是,重新生成bootstrap.js文件,如下图所示:

2. bootstrap.js 三个作用:

  • 添加各个基础命名空间或者类名的映射路径 Ext.Loader.addClassPathMappings()

  • 将类名和备用名,对应起来 Ext.ClassManager.addNameAlternateMappings()

  • 将类名和别名,对应起来 Ext.ClassManager.addNameAliasMappings()

三者对应的meta命令分别为:

  • sencha compile -classpath=app meta -loader -out wyloader.js

  • sencha compile -classpath=app meta -alt -out wyalt.js

  • sencha compile -classpath=app meta -alias -out wyalias.js

参考地址:http://docs.sencha.com/cmd/5.x/advanced_cmd/cmd_metadata.html

注:

  • Ext.define('MyApp.view.Test'),这里的name既对应文件路径,也对应Ext级别的class。为了后文叙述,我们暂且叫他“伪类”

  • 备用名:对应文件路径的作用

  • 别名:对应Ext级别的class的作用

  • bootstrap.js的作用是影响Ext.loader的文件加载和路径查找,以及Ext.ClassManager的类映射。

3. 用三个例子来说明一下

例1,普通的方式

伪类StandardC定义如下:

Ext.define('Seed.view.StandardC', {config:{name : 'wy'},add : function (x, y) {return x + y;},subtract : function (x, y) {return x - y;}
});

调用伪类定义如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:['Seed.view.StandardC' // 注意:如果用create方式创建对象,这里的require可省略],launch: function () {var sc = Ext.create('Seed.view.StandardC'); alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行refresh,并访问地址,结果:运行正常

例2,类的别名的方式

伪类StandardC定义如下:

Ext.define('Seed.view.StandardC', {alias: 'StandardC', // 注意这里用类的别名config:{name : 'wy'},add : function (x, y) {return x + y;},subtract : function (x, y) {return x - y;}
});
  • 调用伪类定义1 如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:['Seed.view.StandardC' // 注意:这里引用伪类],launch: function () {var sc = Ext.create('StandardC');  // 注意:这里用类的别名alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行refresh,在bootstrap.js中添加的如下内容:

Ext.ClassManager.addNameAlternateMappings({"Seed.view.StandardC": []
});Ext.ClassManager.addNameAliasMappings({"Seed.view.StandardC": ["StandardC"]
});

运行应用:结果正常

  • 调用伪类定义2 如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:['StandardC' // 注意:这里引用类的别名],launch: function () {var sc = Ext.create('StandardC');  // 注意:这里用类的别名alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行应用:结果正常

  • 调用伪类定义3 如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:[// 注意:这里不添加任何引用],launch: function () {var sc = Ext.create('StandardC');  // 注意:这里用类的别名alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行应用:结果正常

  • 如果,我们手动删除bootstrap.js中,类的别名和伪类之间的对于关系,refresh

运行报错,如下图:

例3,路径备用名的方式

伪类StandardC定义如下:

Ext.define('Seed.view.StandardC', {alternateClassName: 'al.StandardC', // 注意这里用路径的备用名config:{name : 'wy'},add : function (x, y) {return x + y;},subtract : function (x, y) {return x - y;}
});
  • 调用伪类定义1 如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:['al.StandardC' // 注意:这里引用备用路径],launch: function () {var sc = Ext.create('al.StandardC');  // 注意:这里用备用路径alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行refresh,在bootstrap.js中添加的如下内容(注意区别):

Ext.ClassManager.addNameAlternateMappings({"Seed.view.StandardC": ["al.StandardC"]
});Ext.ClassManager.addNameAliasMappings({"Seed.view.StandardC": []
});

运行应用:结果正常

  • 调用伪类定义2 如下:

Ext.define('Seed.Application', {name: 'Seed',extend: 'Ext.app.Application',requires:[// 注意:这里不添加任何引用],launch: function () {var sc = Ext.create('al.StandardC');  // 注意:这里用备用路径alert('sc :'+ sc.getName()+ ' ,res: ' + sc.add(3,4));}
});

运行应用:结果正常

  • 如果,我们手动删除bootstrap.js中,路径备用名和伪类之间的对于关系,refresh

运行报错,如下图:

注意:例3和例2两次报错的区别!

这里的文件加载和类加载的技术细节,不是重点。而是,找到一种适合自己项目开发环境的,类、命名空间、文件路径之间解耦的解决方案。突破点,在这里,就看怎样应用!

转载于:https://blog.51cto.com/wangyuelucky/1597791

sencha app refresh相关推荐

  1. sencha app watch php,Sencha Cmd使用指南

    查看Cmd版本 使用 sencha 命令查看当前cmd版本信息 sencha 显示如下 Sencha Cmd v6.1.2.15 Sencha Cmd provides several categor ...

  2. sencha app watch php,使用新的SenchaCmd4命令appwatch

    原文:http://www.sencha.com/blog/using-the-new-app-watch-command-in-sencha-cmd-4/ 作者:Don Griffin Don Gr ...

  3. sencha app watch php,Sencha Touch构建移动端App

    Sencha Touch是什么 Sencha Touch是专门用于移动应用开发的JavaScript框架,也是第一个基于HTML5的移动应用框架,其前身是Ext.使用Sencha Touch,开发者可 ...

  4. sencha app watch php,Sencha Cmd 命令及 ExtJs 应用的调试工具

    Sencha Cmd 命令格式 sencha [category] [command] [option...] [arguments...] 帮助信息 sencha help 会列出所有的分类,顶层命 ...

  5. sencha app watch php,我的第一个基于SenchaTouch的WebApp

    经过进一周的各种折腾,各种想放弃,各种纠结,最终还是顺利的完成了SenchaTouch的开发,回想起来感觉"甜甜的",也充分体会到Sencha MVC开发模式的好处,以及Sench ...

  6. Ext6.2 sencha app build 几种报错的解决方法

    1.页面调试debugger没有删除 C2009: YUI Parse Error (identifier is a reserved word =>         debugger;) -- ...

  7. 【翻译】使用新的Sencha Cmd 4命令app watch

    原文:http://www.sencha.com/blog/using-the-new-app-watch-command-in-sencha-cmd-4/ 作者:Don Griffin Don Gr ...

  8. Sencha Cmd包

    #Sencha Cmd包 Sencha Cmd包含Sencha包管理器.包的设计主要为了解决两个问题:吞吐量和分布式开发. ## 包文件夹 所有的工作空间在根目录都有一个由Sencha Cmd生成的& ...

  9. 搭建远程仓库(源)来托管 Sencha 包(Package)

    原文链接:https://blog.csdn.net/lovelyelfpop/article/details/78702191 在 之前的文章 中,我已经展示了如何使用本地 package.在本文中 ...

最新文章

  1. 论机器学习领域的内卷
  2. 云计算已成创新基础设施,三大暗流左右未来“云市场”
  3. ceph 集群 健康状态 监管
  4. Python3 requests post 中文乱码 UnicodeEncodeError: ‘latin-1‘ codec can`t encode characters in ……
  5. 深入理解分布式技术 - Dubbo vs Spring Cloud
  6. OpenCV捕获视频和摄像头
  7. 结合JDK源码看设计模式——简单工厂、工厂方法、抽象工厂
  8. VB打开文本文件各种方法
  9. 调试经验——Windows10中iTunes不能识别iPad的解决方法
  10. 阿里云无影云桌面初体验
  11. 牛客补题 树 dsu on tree
  12. 为什么选择WordPress作为企业CMS?
  13. 【随笔】那些免费友好的遥感影像数据下载网站
  14. html点击切换图片代码简易,html点击按钮时切换图片的代码是什么?
  15. 海洋cms宝塔定时linux,海洋cms怎么设置宝塔自动采集教程
  16. Ruby On Rails 4 hello world,Ruby On Rails上手
  17. Python含金量较高的证书以及学习困难盘点!
  18. otg usb 定位_USB OTG插入检测识别
  19. OA系统二十四:请假审批五:【点击“审批”后的审批弹出框】的后台逻辑;(审批结果提交的Dao层和Service层逻辑)
  20. Redis分布式锁实现并发秒杀商品设计思路

热门文章

  1. Android动态获取权限
  2. 上手kubernetes之前,你应该知道这6件事
  3. Linux之SSH服务端配置文件安全设置
  4. 1.7. FreeBSD 初始化设置
  5. CodeSalt | Python数据结构的实现 — 链表
  6. 实现当UILable的内容超出其范围后自动滚动效果
  7. 在线富文本编辑器 UMeditor
  8. AlphaImageLoader用法
  9. Hadoop伪分布式运行案例
  10. 分治递归逆序数_[模板] 归并排序 逆序数 分治