Ext JS - 问答
Ext JS - 问答
在下面你将可以找到关于Ext JS 的最常见问题的答复.如果没有找到您所需的答复,请访问 Ext JS 论坛或者提交一个支持申请.
如果你确信你的问题可以对本页有补充,请让我们知道!
注意: 下面的FAQ如果没有特别说明,适应于 Ext 5和更高版本.
Ext JS 都支持哪些浏览器?
桌面浏览器
- IE8+ (只适用于标准模式)
- Firefox (PC 和苹果电脑)
- Safari 6+
- Chrome (PC 和苹果电脑)
- Opera (PC 和苹果电脑)
触屏设备
- Safari
- IE10 及其以上版本
- Android 上的 Chrome
注意: Ext JS 5 现在不支持移动设备
我应该使用什么文档类型?
我们推荐使用 HTML5 文档类型. 为保证 Internet Explorer 不启用兼容模式(不支持兼容模式), 我们也推荐使用 X-UA-Compatible 元数据标签. 示例如下:
没有 Sencha Cmd 我该怎么构建应用?
如果不用 Sencha Cmd,你可以通过包含框架,主题 CSS 以及你选择的主题对应的 JS override 类 到你项目中的 index.html
文件的 head 中来构建应用.
在 Ext JS 中,主题的 CSS 及其 override 类文件以包(packages )的形式创建. 在Ext JS 5 中,主题所在的目录为“{ExtJS-5-SDK}/packages/”. 主题包含:
- ext-theme-base (由框架使用,不允许直接配置)
- ext-theme-neutral (创建定制主题时使用,不允许直接配置)
- ext-theme-classic
- ext-theme-gray
- ext-theme-neptune
- ext-theme-neptune-touch (为平板优化)
- ext-theme-crisp
- ext-theme-crisp-touch (为平板优化)
在 Ext JS 6 中,主题被分成了 classic 和 modern 两个工具包. classic 的主题位于“{ExtJS-6-SDK}/classic/”目录内,包含:
- theme-base (由框架使用,不允许直接配置)
- theme-neutral (创建定制主题时使用,不允许直接配置)
- theme-classic
- theme-gray
- theme-neptune
- theme-neptune-touch (为平板优化)
- theme-crisp
- theme-crisp-touch (为平板优化)
- theme-triton
Ext JS 6 的 modern 版主题位于“{ExtJS-6-SDK}/modern/”目录内,包含:
- theme-base (由框架使用,不允许直接配置)
- theme-blackberry
- theme-cupertino
- theme-cupertino-classic
- theme-mountainview
- theme-neptune
- theme-windows
注意: 我们强烈建议使用 Sencha Cmd, 因为上面的示例会引入一个很全很大的文件. 当我们使用Sencha Cmd 时, 你的应用只取需要的一小部分,这样来保持应用程序轻量、响应速度快和干净.
这个 快速入门向导 将完整的指导你使用 Sencha Cmd 生成你的应用.
不同框架文件都有些什么不同?
ext.js: 压缩版. 动态加载扩展类的基础框架.
ext-all.js: 压缩版. 包含框架全部类.
ext-all-debug.js: 未压缩版. 包含框架全部类
ext-debug.js: 未压缩版. 动态加载扩展类的基础框架.
ext-all-rtl-debug.js: 未压缩版. 包含框架全部类和 right-to-left 支持.
ext-all-rtl-sandbox-debug.js: 未压缩版. 包含框架全部类和 right-to-left 支持. 沙箱机制(Sandboxed)允许同其它版本的 Ext 一起使用.
ext-all-rtl-sandbox.js: 压缩版. 包含框架全部类和 right-to-left 支持. 沙箱机制(Sandboxed)允许同其它版本的 Ext 一起使用.
ext-all-rtl.js: 压缩版. 包含框架全部类和 right-to-left 支持.
ext-all-sandbox-debug.js: 未压缩版. 包含框架全部类. 沙箱机制(Sandboxed)允许同其它版本的 Ext 一起使用.
ext-all-sandbox.js: 压缩版. 包含框架全部类. 沙箱机制(Sandboxed)允许同其它版本的 Ext 一起使用.
不使用 Sencha Cmd 我怎么修改应用的主题?
你只需要简单的在 index.html
文件的 head 中包含主题包中的 CSS 和 JS 就能设置应用的主题. 示例如下:
我能够编写一个同时支持桌面浏览器和 iPad 的简单应用吗?
可以, 任何 Ext JS 5 应用应该都可以在桌面、平板及触摸设备的受支持浏览器上正常显示. 值得注意的是, 支持平板一般不需要额外的步骤.
就是说,在特定情形下需要注意两个地方. 第一对于只使用 Ext JS API 事件监听的开发者将不会受到影响. 然而, 如果你直接使用事件监听,或者你正在使用第三方 JavaScript 库监听事件的 ,可能会发生错误. 这是因为, 为了支持触摸手势, 事件处理系统做了一些改动.
关于事件代理机制的变动, 你可以在我们的 事件指南 和 平板支持指南上找到更多资料.
第二个场景是 触屏环境下模拟不了的某些鼠标事件. 例如, 没有和 mouseover, mouseout, mousenter, 或者 mouseleave 等价的触摸事件.
如果在你的应用中这些功能非常关键,那就可能需要提供一些变通的实现. 这经常意味着要用适当的触摸事件代替鼠标事件.
如果 Ext JS 5 可以在平板上工作,为什么我不能也在智能手机上使用?
桌面浏览器和平板控件目前不适合小屏幕. 为正确显示 表格(Grids), 树(trees), 面板(panels), border 布局(layouts) 需要比较大的空间. 这个可能可以显示,但不是很精确地适应小屏幕.
采用 Ext JS 6, 你可以开发一个优化过的可运行在桌面浏览器、平板和移动设备上的简单、通用的应用. 这个应用可以包含通用事件处理逻辑、stores 和 models. 视图(views)部分根据你最终所需要使用的设备类型而分别使用 classic toolkit (旧版 Ext JS_)和 modern toolkit (旧版Sencha Touch) . 你可以在 快速入门向导中阅读更多内容.
如何在 ExtJs 5 和 Touch 中共享控制器(controllers), stores 和 模型(models)?
Ext JS 5 和 Sencha Touch 没有为共享 controllers, stores 和 models 进行优化.
不过, 在 Ext JS 6 中, classic 和 modern toolkit(Touch 和旧版 Ext JS 视图相关)可以共享. 参考 快速入门向导 获得更多信息.
新旧版本之间有什么差异?
关于已删除、新增、已废弃等变化的内容,请查看我们的版本间差异的指南:
- Ext JS 4.2.3 和 Ext JS 5.0.0
- Ext JS 5.0.0 和 Ext JS 5.0.1
- Ext JS 5.0.1 和 Ext JS 5.1.0
- Ext JS 5.1.0 和 Ext JS 5.1.1
- Ext JS 5.1.1 和 Ext JS 6.0.0 classic 工具包
- Touch 2.4.1 和 Ext JS 6.0.0 modern 工具包
注意: 我们相信, 开发人员在升级他们的应用时,通过借鉴这些差异指南, 可以获得很大的帮助. 可以这么说, 这些报告是自动生成的, 也许不能很精确的描述变更. 在文档更新、格式调整等情况下可能会留下一些无用的变更. 如果你在这些变更报告中发现了不正确的和不合适的内容,请在论坛上报告.
Ext JS 5 在表格渲染上要比 ExtJS 4 快吗? 性能上有提高吗?
在有些方面要快些. 在5版本中, Grid 的 dom 结构已经修改为使用 一行一个table(table-per-row) 的方式, 这使得表格的渲染获得了重大的速度提升.
表单控件的 JS 布局和按钮干掉了 “流式(liquid)” CSS 布局. 在生成大型表单时使用 “form 布局”可以看到有性能提高. 这些改进应该有助于性能提升, 但仍然需要继续改进. 在下一个发布的版本中, 有更进一步的性能提升值得期待.
有没有可能同时使用不同版本的 Ext JS?
可以, 你可以使用 “沙盒(sandboxed)” 构建的版本, 这个可以修改顶层 JS 的命名空间, 和 CSS 前缀, 以避免冲突. 重要的提醒是不建议在生产环境使用两个不同版本的Ext JS, 因为这需要完整加载两套不同的 Ext JS 框架.
这意味着相当于加载了2次应用程序那么多的资源. “沙盒(sandboxed)” 构建的版本通常用于版本迁移或者在旧应用中使用新特性等临时需要.
Ext JS 5 怎么使用本地化?
可以通过使用本地化相关的的覆写(overrides), 在你的应用中支持本地化, 这个可以在 Sencha Cmd 生成的 app.json
文件中设置. 请查看 本地化向导 获得更多资料.
不修改源码的情况下怎么覆写一个方法?
创建一个覆写(override)类的推荐方法如下:
1) 首先, 为你的应用程序的 overrides 目录中的 override 类定义一个合适的命名空间
2) 添加 “override” 配置, 其值是你要覆写的类名, 在这个例子中,我们要覆写 Ext.panel.Panel.
3) 添加你准备覆写的函数. 你需要确认保留了所有相关的代码片段. 在这个例子中,我只是修改了 close 函数, 添加的代码是 console.log()
. 如果你创建一个 panel 然后调用 panel.close()
, 你会收到一个显示 “My Change to Close” 的控制台信息.
注意: 在你覆写的方法中, 你需要执行 this.callParent()
代码来调用目标类中的原方法. 如果要忽略这个方法, 转而去调用父类的相应实现(比如避免目标类中方法的bug), 你可以调用 this.callSuper()
来代替.
4) 添加一个新函数. 也许你会想像, Ext.panel.Panel 没有 helloWorld
方法. 然而, 我刚刚通过覆写增加了. 现在, 创建一个 panel ,并且执行 panel.helloWorld()
就会显示出一条 “Hello World” 的控制台消息.
在 Ext JS 5 中怎么使用绘图类?
绘图包现在包含在 sencha-charts 包中. 也就是说,为了使用绘图类,你需要包含 sencha charts.
如果你正在使用 Sencha Cmd, 这就只要简单的在app.json
文件中在 requires 数组中增加 “sencha-charts” 就可以了.
不用 Sencha Cmd 使用 Sencha Charts 和 Draw
在 Ext JS 5 中, 如果你要使用 charts(图表), 但又不想使用 Sencha Cmd, 你可以在你应用的 “index.html” 页面文件中简单地引用以下的文件.
在 Ext JS 6 中使用 classic toolkit:
在 Ext JS 6 中使用 modern toolkit:
框架支持浏览器缩放吗?
对于浏览器缩放, 我们没有官方支持, 但是大多数组件在现代的各种浏览器中应该都能使用.
什么是 callParent,为什么和怎么使用?
callParent
是 Sencha 类系统提供的一个用于调用你父/祖先类中的方法. 这个通常用于当你 继承一个框架类 或者 覆写一个类中提供的方法(比如 onRender
) 时. 当你在一个带参数的方法中调用 callParent
时,你有2种方式将这些参数传递到祖先类的方法中. 最好的方式是只传递特定必需的参数. 在这种情形下, 你可以通过数组传递:
或者, 你可以使用 arguments 关键字的缩写形式, 像这样:
看起来差别很小, 但当你使用 Sencha Cmd 5 的新的优化功能调用 callParent
时, 就能发现性能的提升. 当启用这个优化器时, 这2个方法会按如下代码进行优化:
或者:
在第二种情况下, 优化器可以用 JavaScript 函数的 call 方法而不是 apply. 我们也避免了使用 arguments. 二者都是有名的高性能杀手. 原来我们甚至避免创建数组. 显然, 启用优化器还是有帮助的. 但在性能最为关键的代码中, 用显式的数组参数代替 arguments 是值得的.
Ext JS - 问答的更多相关文章
- Ext JS 如何动态加载JavaScript创建窗体
JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS ...
- sencha ext js 6 入门
Sencha Ext JS号称是目前世界上最先进和最强大的.支持多平台多设备的JavaScript应用程序开发框架.首先看一下Ext JS的发展简史. 1 Ext JS发展简史 YUI-Ext的作者J ...
- Ext.js细节:在MVC中处理Widget Column,GetCmp和ComponentQuery, Id和ItemId
针对EXT.JS版本的演进,要不断的学习新的最佳实践方法. 比如,在定义组件时,尽管用itemid,而不是id. 在搜索组件时,尽量用ComponentQuery,而不是getCmp. 在MVC中处理 ...
- 《Ext JS模板与组件基本知识框架图----模板》
最近在整理Ext JS的模板和组件,在参考<Ext JS权威指南>,<Ext JS Web应用程序开发指南>,<Ext JS API>等相关书籍后才写下这篇< ...
- 介绍Ext JS 4.2的新特性的《深入浅出Ext JS》上市
以用户为中心的时代,应用的界面外观变得越来越重要.然而,很多程序员都缺乏美术功底,要开发出界面美观的应用实属不易.Ext JS的出现,为广大程序员解决了这一难题.它有丰富多彩的界面和强大的功能,是开发 ...
- Ext JS 4 老特征:statics 静态的变量和方法
l 一.静态的变量和静态的方法 [译文原创Learning Ext JS 4 第51页] Statics的方法只属于类本身,而不属于任何一个实例,这就决定了我们是在定义类的内部来用statics方 ...
- Ext JS 4 新特性2:配置项属性(config)之二
Ext JS 4 新特征2:配置项属性config之二 ☞ Config(自动的setters和getters) Ext JS 4介绍了config声明方式,在Ext JS 中也有几个例子:在运行程序 ...
- Ext JS 4 新特性2:配置项属性(config)之一
Ext JS 4 新特征2:配置项属性config 最新版本的Ext JS 4.2的另外一个伟大的新特征就是增加了configuration配置项属性,当我们在创建一个新类的时候,经常性的要设置某某属 ...
- CDH5X 安装oozie报错To enable Oozie web console install the Ext JS library.
最近在CDH5.X 安装oozie 服务,服务安装完毕,访问oozie server ui,报如下错误: 页面提示: Oozie web console is disabled.To enable O ...
随机推荐
- Android开发-之监听button点击事件
一.实现button点击事件的方法 实现button点击事件的监听方法有很多种,这里总结了常用的四种方法: 1.匿名内部类 2.外部类(独立类) 3.实现OnClickListener接口 4.添加X ...
- 前端学HTTP之WEB服务器
前面的话 Web服务器每天会分发出数以亿计的Web页面,它是万维网的骨干.本文主要介绍WEB服务器的相关内容 总括 Web服务器会对HTTP请求进行处理并提供响应.术语“Web服务器”可以用来表示We ...
- c#编程基础之字符串基础
1.C#中单个的字符串用单引号包含就是char类型,('a'),单引号中放且只能放一个字符 2.单个字符也可以表示为字符串,还可以有长度为0的字符串. 3.使用s.Length属性来获得字符串中的字符 ...
- 详解:基于WEB API实现批量文件由一个服务器同步快速传输到其它多个服务器功能
文件同步传输工具比较多,传输的方式也比较多,比如:FTP.共享.HTTP等,我这里要讲的就是基于HTTP协议的WEB API实现批量文件由一个服务器同步快速传输到其它多个服务器这样的一个工具(简称:一 ...
- c# 九九乘法表
static void Main(string[] args) { ; i < ; i++) { ; s <= i; s++) { Console.Write(s + "*&qu ...
- WPF多源绑定
将控件绑定到多个数据源,ListBox绑定到一个集合,其中每一项绑定到集合中对象的两个属性,并对绑定进行了格式化. <ListBox ItemsSource="{StaticResou ...
- asp.net MVC4——省市三级联动
controller: public ActionResult GetCity(string id) { AreaService _areaSvc = new AreaService(); List& ...
- C语言计算2个数的最小公倍数
#include<stdio.h>int main(){ int a,b,i=1,temp,lcm; scanf("%d %d",&a,&b); ...
- mysql 安装
编译环境yum install gcc gcc-c++ ncurses-devel perl 依赖yum install boost boost-devel boost-doc 安装cmake wge ...
- Java三大框架之——Hibernate中的三种数据持久状态和缓存机制
Hibernate中的三种状态 瞬时状态:刚创建的对象还没有被Session持久化.缓存中不存在这个对象的数据并且数据库中没有这个对象对应的数据为瞬时状态这个时候是没有OID. 持久状态:对象经过 ...