原文:What’s New in Ext JS 5.0.1

今天,我们很高兴的宣布Ext JS 5.0.1发布了!此维护版本基于Sencha社区的反馈做了一些改进。

下面让我们来了解一下这些改变。

可访问性

与Ext JS 4.2.2一起,我们发布了“ext-aria”包来为可访问性提供了改进的支持(如WAI-ARIA 1.0标准中所描述的)。对于提供工具来让提高应用程序的可访问性来说,这是很重要的一步,我们还从测试合作伙伴和早期采用者的反馈意见中学到了一些东西。

随着Ext JS 5的发布,我们希望能综合反馈意见并提供一个更好的解决方案。我可以很高兴的宣布,对于Ext JS 5.0.1,对于可访问性的支持已经改进了许多。很大程度上,这是因为我们已经将焦点和键盘导航的支持从“ext-aria”移动到了框架本身。

焦点

在Ext JS 5.0.1,我们大大的改进了焦点的内部处理方式以便更好的符合可访问性标准。核心组件(如按钮、标签、表单字段和网格)现在可以完全提供一个清晰、视觉指示的焦点。这是可访问性应用程序的关键需求。为了让你可以完全控制这些新的视觉方法的东西,我们已经添加了几个新的Sass变量和混入(mixin)参数。

键盘导航

之前版本的Ext JS会使用Ext.FocusManager来辅助管理焦点。虽然该类仍然存在,但它不再是推荐的方法。相反,所有组件现在都带有“focusable”属性,可用来管理DOM属性tabIndex。将该属性设置为true的任何组件都可通过单击或键盘来接收焦点。

当这些可获得焦点的组件被放置在某些容器(如工具栏)时,容器会提供箭头键盘导航并可管理容器内的哪一些条目可以接收焦点。

还有许多与可访问性、焦点和键盘导航改进有关的信息,要想详细了解这些,可以阅读可访问性指南

视图模型

在很大程度上,已经看到了开发人员是如何迅速的拿起视图模型和数据绑定。除了一般的bug修复外,还有一些值得注意的改进是与绑定有关的。

选择绑定

许多开发人员已经要求我们在哪些支持选择的组件上扩展绑定属性的能力(如组合框、网格、树、Breadcrumbs等等),以便支持选择。

现在,在同步的时候,可以使用绑定来保持这些组件的选择,有关这方面的详细信息,可参阅Kitchen Sink示例。

模型和字段验证

表单字段的一项关键改进是,现在在更新他们的绑定属性之前,双向绑定会验证值是否有效。为了实现这个,在将模型绑定到字段的时候,表单自动现在会获取模型的验证并将它包含在自己的验证里。

在Ext JS 5.0.0,这些验证只在第一次返回值(可能是无效的)的时候作为参考。而在Ext JS 5.0.1,终于可以放心了,因为无效值将永远不糊返回到记录中。

数据

在此版本,Ext.data也有一些重要的修复和改进。

TreeStore vs 节点事件

在Ext JS 5.0.0,TreeStore类被重构为派生于Ext.data.Store。然而,在此过程中,存在一个关键问题:TreeStore不会从根节点(Ext.data.NodeInterface)传播事件。

对于大多数由树节点除非的事件来说,一切如常。不过,某些节点事件在创建监听的时候可能会与存储事件发生冲突,如remove事件。

对于这个问题,唯一安全和有效的修复是,在将所以节点事件作为TreeStore事件触发之前,在事件前添加前缀node,这意味着节点的remove事件现在会作为TreeStore的noderemove事件触发。在维护版本中,我们一直在努力去避免这种更改,但这实在是没有其他办法在不破坏任何接单监听或存储监听的情况去解决这个问题。对于这种变化造成的不便,我们深表歉意。

关联

在Ext JS 5.0.0中,对于关联的限制是,如果你要创建一个新记录然后删除该记录,就会发现没有清理逻辑来处理它潜在的子记录,这可能会造成生成、创建或更新这些子记录的操作会话,但在服务器端却无法处理这些操作,因为没有父记录不存在。

在Ext JS 5.0.1中,在移除记录的时候,被声明为模型之间父所有者或子所有者的reference字段会被作为参考,当表示的是这种类型的关联时,移除记录将会自动去删除他的子记录。

例如:

    Ext.define('App.model.Order', {
extend: 'Ext.data.Model',
// ...
}); Ext.define('App.model.OrderItem', {
extend: 'Ext.data.Model', fields: [{
name: 'orderId', // Indicates that the referenced Model (Order) owns these
// records:
reference: { parent: 'Order' }
}]
});

这样,当Order被移除(标记为删除)的时候,它的子OrderItems将同样被移除:

 order.drop();

另外,设置父的references为null(例如,通过与父的关联存储删除它)也可以清理这些记录:

   order.orderItems().removeAt(0); // removed orderItem is dropped

   order.orderItems().getAt(0).setOrder(null); // also drops this item

服务器仍然可以负责最终的完整级联删除,不过上述处理需要确保客户端永远不会在保存操作中引用移除的记录。

    Ext.define('MyApp.view.main.Main', {
extend: 'Ext.container.Container', mixins: [
'Ext.mixin.Responsive'
], responsiveFormulas: {
small: 'width < 600',
medium: 'width >= 600 && width < 800',
large: 'width >= 800', tuesday: function (context) {
return (new Date()).getDay() === 2;
}
}
});

在以上代码中,新的值(small等)就可以使用在其他的responsiveConfigs中。这有助于简化应用程序的responsiveConfigs,以及在一个地方维护这些选择。

图表

“Sencha-charts”包也有几个改进,如可重用的标记(箭头、菱形等)。对于那些不使用Sencha Cmd的初学者来说,sencha-charts包已经包含在Ext JS 5.0.1的生成包中。最显著的改变是在文档中已经说明了如何去创建自定义图表的主题。

图表主题

在Ext JS 5.0.0,可以为图表选择附带的几个内置主题,不过创建自定义主题则没有任何文档进行说明。在当前版本,已经提供了这种能力,从而你可以制作自己的调色板和其他更多东西。

图表的主题是一个派生于Ext.chart.theme.Base,且别名是以“chart.theme.”开头的类,基本的主题就像以下代码那样简单:

    Ext.define('App.chart.theme.Awesome', {
extend: 'Ext.chart.theme.Base', singleton: true,
alias: 'chart.theme.awesome', config: {
baseColor: '#4d7fe6'
}
});

这样,就可以在图表系列、坐标轴和标记中任意使用这些恶配置了。如要了解所有选项,可阅读有关的可用配置API。要使用新创建的主题,可以在图表中设置theme配置项:

  theme: 'awesome'

Sencha Cmd

最后但并非不重要的是,在Sencha Cmd 5.0.1中,已经扩展了app.json的选择,拥有了更多的细粒度的控制来配置东西,以满足所需,而不需要深入研究生成脚本。

输出

为了一窥这些有用的新控制,我们来研究下输出对象。在某些环境中,最常见的要求是要在文件夹之外保持“标记”文件以表明Sencha应用程序所在,例如:

    foo.php
foo/
app.json
app.js

与模型不同的是,标记文件(以上是foo.php,不过也可以是其他任何东西)是在父文件夹,在之前版本,这要求设置几个生成属性。在Sencha Cmd 5.0.1,可以在app.json中实现:

    {
...
"indexHtmlPath": "../foo.php", "output": {
"page": {
"path": "../foo.php",
"enable": false
}
}
}

以上代码就可禁用生成步骤,以确保所有路径都会根据父文件夹来计算好相对路径后再重写标记文件。输出对象还可以控制生成输出方面,从启用编译器优化到调整微加载方面等许多东西。

打包

Cordova和PhoneGap现在通过使用新的packager属性可以获得更多灵活性且易于使用。新的设置允许直接在app.json中生成指定的包(cordova或phonegap)。结合builds对象(在Sencha Cmd 5.0.0中加入),还可以在应用程序生成是选择是生成web的,还是iOS的,还是安卓的。

例如:

    {
...
"builds": {
"web": {
"default": true // picked by "sencha app build"
},
"ios": {
"packager": "phonegap",
"phonegap": {
"config": {
"platform": "ios",
"remote": true // use PhoneGap Build
}
}
},
"android": {
"packager": "phonegap"
"phonegap": {
"config": {
"platform": "android" // use Local Phonegap
}
}
}
}
}

以上代码,可以使用以下代码来生成:

  sencha app build

以上代码是用来生成Web生成的。现在还可以这样进行生成:

    sencha app build ios
sencha app build android

当然,要这样必须先安装PhoneGap,且需要配置PhoneGap的生成凭证。此外,还可以删除上面的“remote”配置并切换为“cordova”包(如果已经拥有Cordova或一个iOS开发环境)。

除了以上形式,还可以看到这些属性如何去清理生成过程。使用这种方法,还可以将“testing”添加到任何生成,以获取用于调试的非压缩的javascript代码(在之前版本需要手动调整某些东西)。

小结

Ext JS 5.0.1和Sencha Cmd 5.0.1提供了很多所需的重要改进。在所有这些Ext JS 5的新功能中,我们很期待的他们会在你的应用程序中发生什么了不起的事情。下载它并试用一下,然后,在论坛里告诉我们你的想法。

作者:Don Griffin
Don Griffin is a member of the Ext JS core team. He was an Ext JS user for 2 years before joining Sencha and has over 20 years of software engineering experience on a broad range of platforms. His experience includes designing web application front-ends and back-ends, native GUI applications, network protocols and device drivers. Don’s passion is to build world class products that people love to use.

【翻译】Ext JS 5.0.1 中的新功能的更多相关文章

  1. 【翻译】在Ext JS 5应用程序中怎样使用路由

    原文:How to Use Routing in Your Ext JS 5 Apps 简单介绍 Ext JS 5是一个重要的公布版本号,它提供了很多新特性来创建丰富的.企业级的Web应用程序.MVV ...

  2. 【翻译】在Ext JS 5应用程序中如何使用路由

    原文:How to Use Routing in Your Ext JS 5 Apps 简介 Ext JS 5是一个重要的发布版本,它提供了许多新特性来创建丰富的.企业级的Web应用程序.MVVM和双 ...

  3. 在Ext JS 5应用程序中如何使用路由

    简介 Ext JS 5是一个重要的发布版本,它提供了许多新特性来创建丰富的.企业级的Web应用程序.MVVM和双向数据绑定为开发人员承担了大量的繁重工作.在Ext JS 5种,另一个新特性就是路由,它 ...

  4. Docker 1.12.0将要发布的新功能

    Docker 1.12.0将要发布的新功能 导读 按计划,6/14 是1.12.0版本的 feature冻结 的日子,再有两个星期Docker 1.12.0也该发布了.这里列出来的新功能,都是已经合并 ...

  5. ECMAScript 2016,2017 和 2018 中所有新功能的示例

    很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...

  6. [转]ECMAScript 2016,2017 和 2018 中所有新功能的示例

    很难追踪 JavaScript(ECMAScript)中的新功能. 想找到有用的代码示例更加困难. 因此,在本文中,我将介绍 TC39 已完成 ES2016,ES2017 和 ES2018(最终草案) ...

  7. 微信小程序0.11.122100版本新功能解析

    微信小程序0.11.122100版本新功能解析   新版本就不再吐槽了,整的自己跟个愤青似的.人老了,喷不动了,把机会留给年轻人吧.下午随着新版本开放,微信居然破天荒的开放了开发者论坛.我很是担心官方 ...

  8. SQLSERVER2014中的新功能

    SQLSERVER2014中的新功能 转载自:http://blog.csdn.net/maco_wang/article/details/22701087 博客人物:maco_wang SQLSER ...

  9. PhotoZoom Classic 7中的新功能

    众所周知PhotoZoom Classic是家庭使用理想的放大图像软件.目前很多用户还在使用PhotoZoom Classic 6,对于PhotoZoom Classic 7还是有点陌生.其实在6代衍 ...

随机推荐

  1. django之数据库orm

    一.数据库的配置 1 django默认支持sqlite,mysql, oracle,postgresql数据库. <1>sqlite django默认使用sqlite的数据库,默认自带sq ...

  2. Nginx之(四)工作原理

    众所周知,nginx性能高,而nginx的高性能与其架构是分不开的 4.1 进程模型 Nginx在启动后,会有一个master进程和多个worker进程.master进程主要用来管理worker进程, ...

  3. 实例演示如何在spring4.2.2中集成hibernate5.0.2并创建sessionFactory

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/49388209 文章作者:苏生米沿 本文目的:使用spring4.2.2集成hibern ...

  4. Android-Chart

    MPAndroidChart 包括折线图.曲线图.柱形图.饼图.K线图等等 我的地址:https://github.com/kongqw/MPAndroidChart 开源地址:https://git ...

  5. 我的第一本著作:Spark技术内幕上市!

    现在各大网站销售中! 京东:http://item.jd.com/11770787.html 当当:http://product.dangdang.com/23776595.html 亚马逊:http ...

  6. Android音频处理——通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能

    Android音频处理--通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 音频这方面很博大精深,我这里肯定讲不了什么高级的东西,最多也只是一些基础类知识,首先,我们要介绍一下 ...

  7. 使用spark ml pipeline进行机器学习

    一.关于spark ml pipeline与机器学习 一个典型的机器学习构建包含若干个过程 1.源数据ETL 2.数据预处理 3.特征选取 4.模型训练与验证 以上四个步骤可以抽象为一个包括多个步骤的 ...

  8. FORM开发之键性弹性域开发

    1.创建表时带有键弹性域字段 SUMMARY_FLAG VARCHAR2(1) , /* 必须有此字段 */ ENABLED_FLAG VARCHAR2(1) , /* 必须有此字段 */ START ...

  9. JSP简单隔行变色和日期格式化

    以前好像在找,都没找到简单点的,所以后面就自己写了一个,感觉超级简单又好理解,分享给大家 <%@ page language="java" import="java ...

  10. GDAL库扩展Landsat系列MTL文件格式支持

    Landsat系列卫星提供的数据,一般都是每个波段一个tif文件,然后外加一个MTL.txt的元数据文件,使用gdal可以直接打开每个波段的tif文件,但是有时候想在打开tif数据的同时能够自动读取M ...