原文:Announcing Ext JS 5.1 Beta

概述

我们很高兴的宣布,Ext JS 5.1 beta发布了。自从Ext JS 5.0.1,我们一直在努力添加一些令人兴奋的和一些在Sencha社区反映强烈的新功能。Ext JS 5.1为网格(Grid)配备了全新的选择模式(电子表格模型),还包括其他新的组件和增强,如三维柱形图和三维条形图,增强的部分包括画图吧、颜色选取器和评分小部件。我们非常欢迎你们你们到我们的论坛参与Ext JS 5.1beta版本的测试,让这些令人兴奋的新功能达到实用性。

下载Ext JS 5.1 beta

电子表格选择模型

Ext JS网格一直是该框架的核心,在Ext JS 5.1,添加了一个全新的选择模型,就是模仿一个电子表格的体验,这也是被成为“电子表格”的原因。使用该模型,用户可以选择单元格范围:

还可以整列、整行或整个数据集。

甚至可以启用行复选框,这时候电子表格额能是你需要的唯一的选择模型。

剪贴板插件

在使用电子表格选择模型的时候,还可以添加新的剪贴板插件来让网格与运行在浏览器之外的其他应用程序进行交互。用户可以选择一定范围的数据,然后按行啊CTRL+C(或Mac上的Command+C)来将这些单元格复制到系统剪贴板,再切换到一个应用程序,如微软Excel,并粘贴这些数据。

当然,反过来也是可以的。用户可以在外部应用程序复制数据到剪贴板,然后选择目标网格单元格并按下CTRL+V(或Mac的Command+V)进行粘贴。

所有这些功能添加到网格就如以下代码:

requires: [
'Ext.grid.selection.SpreadsheetModel',
'Ext.grid.plugin.Clipboard'
], selModel: {
type: 'spreadsheet',
columnSelect: true // replaces click-to-sort on header
}, plugins: 'clipboard'

默认情况下,剪贴板插件使用的是系统剪贴板,不过它也可以使用一个内部缓冲区在网格与应用程序之间交换自定义格式的数据。

图表的3D条形图和3D列

在Ext JS 5.1,sencha图表包现在提供了一个"bar3d"系列和要给“numeric3d”轴,将他们结合起来就可以创建一些漂亮的图表,如下面这样的堆积柱形图:

通过提供自定义的renderer方法,还可以简单的调整列的fillStyle,并仍然能获得所有适当的梯度来保持3D外观:

不要漏下这样的条形图:

堆积条形图有两个新的配置项来支持附加的3D功能:fullStack和fullStackTotal。这些配置项允许图表在存储(store)中获取任何数据并去指示系列动态的调整数据的显示以适应指定的范围(通常是0%到100%)。

为了启用完全堆叠,只需要在系列中设置fullStack为true。默认情况下,系列的所有y字段会被堆叠为100这个总数来呈现百分比。不过,可以使用fullStackTotal来将轴调整到任何范围。

图表的Item事件

最后,使用图表,现在还可以通过添加新的“chartitemevents”插件来将图表连接到item级事件,如itemtap或itemmousemove。

其他新的组件

高级颜色选取器

你可能还记得上一篇文章中介绍的颜色选取器组件:

现在,实际上有三个颜色选取器组件。上面的示例显示的是colorfield和colorselector。colorfield组件是表单字段,用来显示颜色值和样本色板。colorselector会在弹出窗口显示。

第三个颜色选取器是colorbutton,即单击颜色色板来显示colorselector。

这些组件都是Ext.ux命名空间的一部分,现在包含在框架的“ext-ux”包中。下面会有“ext-ux”包的更多相关信息。

评分小部件

新的评分小部件(之前的文章提及过)现在也是“ext-ux”包的一部分:

评分小部件类似滑块,允许用户快速的在有限的范围内挑选一个值,与滑块不同的是,评分使用的是重复的标示符号(web字体)来表示选择并通过单击调整值。

Ext-ux包

在框架的之前版本,Ext.ux命名空间被放在examples/ux文件夹下。这对主题来说是一个挑战,因而,在Ext JS 5.1添加了ext-ux包来包含这些组件。随着时间的推移,现有的Ext.ux成员会被迁移到“ext-ux”或者提升为框架本身。

要在Sencha Cmd应用程序中使用ext-ux包,可以简单将它添加到app.json文件:

"requires": [
"ext-ux"
]

作为已给标准包,ext-ux生成的输出可用于没有使用Sencha Cmd的应用程序。以下是文件夹build的内容:

Javascript文件“ext-ux.js”和“ext-ux-debug.js”在build文件夹的顶层。基于应用程序的主题,还要从这三个主题文件夹中选择编译好的CSS文件和resources。

绘图包的功能

在sencha-charts里的Ext.draw包也有一些令人兴奋的用来徽章超级简单图表的新功能。

Sprite事件

现在,可以通过添加“spritevents”插件到Ext.draw.Container来处理诸如itemitap或itemmouseover这样的sprite事件。

命中测试

还添加了新的API来针对复杂的路径进行点的命中测试:pointInPath和pointOnPath。而且,这里还有几个示例来演示这些新API的运作:

路径交集

还可以相交两条完整的路径并处理他们的交点。在另外一个新的示例中,可以拖动路径周围的图形并突出显示移动后的交点。

相交的简单线条或由多个贝塞尔曲线段组成的复制图形的详细信息都被隐藏起来了,因而不需要担心路径的内容。

关于统一核心的进展

正如所知道的,Ext JS 5.x一直工作在一个共享的sencha-core包。在该版本,已经将Ext.app(MVC和MVVM类)移动到核心并完成事件系统。

Ext.app.Profile

Ext.app.Profile最初见于Sencha Touch,现在,它包含在sencha-core,并放在Ext.app命名空间中。也就是说,统一的MVC/MVVM功能集现在可以共享代码了。所以,现在Ext JS 5.1应用程序可以访问Ext.app.Profle,逻辑问题是“它如何工作”和“它提供了什么”。

激活

如果之前从未使用过Sencha Touch配置文件,那可以把他看成一个小型应用程序。应用程序需要在他们的配置文件中列出所需的配置。在运行时,框架会窗口这些配置文件的示例,然后依次序迭代这些列表并调用isActive方法。第一个配置的实例会返回true以确认配置已激活(或当前)。

mainView配置

一个典型的使用配置文件(说的是平板电脑或桌面)的做法是用来控制呈现给用户的顶层视图。使用Ext JS 5.1,有一个新的mainView配置项来指定应用程序或配置,该配置项将取代旧版Ext JS应用程序的“autoCreateViewport”配置项。

配置文件和其他选项

在Ext.app.Profile之前,Ext JS 5.0应用程序可以使用responsiveConfig(通过一个插件或混入)来在运行时选择或使用Sencha Cmd生成配置来生成特定目的的生成。应用程序配置位于这两个选项之间。

应用程序配置会在加载时被执行,因而可以做一些需要做的事。他们并不局限于诸如responsiveConfig这样的配置设置,因为他们必须包含在生成中,不过,他们会增加应用程序的大小和空间需求,而不会考虑是在什么设备上运行的。然而,使用生成配置,你可以将只基于苹果应用程序商店的iOS生成中移除安卓系统中特定的内容。

事件系统(Observable和Element)

在Ext JS 5.0,引入了源自Sencha Touch新的多设备、启用触屏的事件系统。这将支持滚轮和手势失败系统,以及Ext.Element委托事件模型。新的事件系统的入口是Ext.mixin.Observable。然而,原始的Ext JS事件系统是基于Ext.util.Observable的。这两个类的API基本上是一样的,不过他们在一些不太常见的用例中胡有不同。

在Ext JS 5.1的统一事件系统还将提供这两个类(出于兼容性原因),不过,现在他们之间唯一的区别是Ext.mixin.Observable会在构造函数调用initConfig,而Ext.util.Observable会使用旧的 Ext.apply方法将配置对象属性复制到实例。

在完成统一后,就可以优化事件监听和触发,从而减少这些关键领域的开销。为了解决兼容性问题,一定要去查阅升级指南。

辅助功能和键盘导航

Ext JS 5.1继续扩展了Ext JS 5.0.1中对主要辅助功能的支持,尤其是在在处理各种弹出元素(从组合框到各种擦掉)的时候,已经得到了改善。弹出的级联的focus和blur事件的处理也固定了。

统一的滚动API

在使用许多触屏设备的时候,需要特定的逻辑来有效的管理滚动。为了规范所有设备的特定行为,在Ext JS 5.1添加了Ext.scroll.Scroller。在使用诸如autoScroll、overflowX或overflowY这样的配置项的ih,框架会创建一个该类的实例,不顾,现在更多的是使用新的scrollable配置项来实现控制。

如果熟悉Sencha Touch,可能会认识该配置项。然而,在Ext JS 5.1,它现在是 Scroller的配置对象。为了返回 Scroller,需要调用getScrollable方法。该对象提供了诸如scrollTo或scrollBy这样的常用的API,因而,不再需要担心如何去管理当前设备上的滚动。

如果应用程序中存在以下这样的配置:

autoScroll: true

// or perhaps just horizontal:
overflowX: true // or maybe just vertical:
overflowY: true

他们可继续工作,不过,在Ext JS 5.1,以下代码作用是一样的且需优先考虑:

scrollable: true  // equivalent to autoScroll: true

scrollable: 'x'   // equivalent to overflowX: true

scrollable: 'y'   // equivalent to overflowY: true
 

Sencha Cmd 5.1

最后,但并非不重要的是,Sencha Cmd 5.1现在也可使用了。该版本侧重于性能,并引入了新的编译器优化。新的优化,被称为“cssPrefix”,支持在同一个页面使用多个版本的Ext JS来优化框架代码。这被称为“sandboxing”,它要求类似如下的代码:

rowCls: Ext.baseCSSPrefix + 'grid-row',

新的优化将以上代码替换为:

rowCls: 'x-grid-row',

这就消除了数百个这种串联在一个正常的应用程序(整个框架超过1000)中的代码。为了使用这种优化,需要在app.json中修改一下代码:

"output": {
"js": {
"optimize": true
}
}

要使用目前可使用的所有优化,可以这样:

"output": {
"js": {
"optimize": {
"callParent": true,
"cssPrefix": true,
"defines": true
}
}
}

如果使用Sencha Cmd,需要该版本才能使用Ext JS 5.1。一如以往,Sencha Cmd 5.1支持所有从Ext JS 4.1.1a和Sencha Touch 2.1之后的各框架版本。

小结

可以在这里查看示例和在这里下载测试版本。如果要使用Sencha Cmd,就要使用Sencha Cmd 5.1.0 beta

希望你们能去试用Ext JS 5.1 beta。除了上面提到的新功能,还有无数的臭虫修复和其他的改进。去我们的论坛提交你的评论以便让我们知道你的想法。

作者:Don Griffin
Don Griffin is the Engineering Manger for Ext JS and Sencha Touch. 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.1 beta版本的更多相关文章

  1. 【翻译】Ext JS 6早期访问版本发布

    早期访问版本是什么 如何参与 都包括什么 Sencha Ext JS 6 Sencha Pivot Grid Sencha Cmd 6 JetBrains IDE插件 反馈 原文:Announcing ...

  2. 集美大学网络1413第十四次作业成绩(团队九) -- 测试与发布&博客展示(Beta版本)

    题目 团队作业9--测试与发布(Beta版本) 团队作业9成绩  团队/分值 Beta版本测试报告 Beta版本发布说明       总分  Bug类别. 数量 场景测试 测试结果 测试矩阵 出口条件 ...

  3. 下载Ext JS 5.1 gpl版本的方法

    先进入官网:http://www.sencha.com 然后在导航的Products中选择Sencha Ext JS,会看到以下页面: 这时候不要单击Download按钮,而是要单击导航中的DETAI ...

  4. Ext JS 5 beta版发布

    原文:Announcing Public Beta of Ext JS 5 我们非常高兴的宣布,Sencha Ext JS 5 beta版本开始进行公测了.这个beta版本可以让你.我们Sencha社 ...

  5. 【翻译】Ext JS 6 Beta发布

    原文:Ext JS 6 Beta is Now Available 概述 Ext JS 6的好处 新的Ext JS功能和工具 需要你的反馈意见 概述 很高兴,Ext JS 6 beta版本现在发布了. ...

  6. Sencha Cmd创建Ext JS示例项目

    Sencha提供了免费的Cmd工具,可以用来创建Ext JS项目并提供了一些便利的功能. Sencha也在官方文档中提供了一个示例来演示如何创建一个Sample Login App. 本文就介绍一下这 ...

  7. [Ext JS 4]性能优化

    一般的优化技巧 1. 检查你定义的时间监听器 正确的设置事件监听器对性能会有很大的影响. 举例来说, 在定义一个store的时候,设置一个load 的事件去触发从后台读取数据,如果设置single 的 ...

  8. Beta版本展示

    Beta版本展示 开发团队:MyGod 团队成员:程环宇 张芷祎 王田路 张宇光 王婷婷 源码地址:https://github.com/WHUSE2017/MyGod MyGod团队项目的目标: 让 ...

  9. Ext Js 6+ 动态切换皮肤

    在这里以ext js 6.2.1版本为例(注:需要安装Sencha Cmd,以及下载对应的sdk) 1.创建空白项目 在命令行中输入sencha -sdk D:\Code\ext-6.2.1 gene ...

随机推荐

  1. 学习ASP.NET Core Razor 编程系列七——修改列表页面

    学习ASP.NET Core Razor 编程系列目录 学习ASP.NET Core Razor 编程系列一 学习ASP.NET Core Razor 编程系列二——添加一个实体 学习ASP.NET ...

  2. /usr,/usr/local/ 还是 /opt ?

    Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的(好吧处女座表示完全不能接受不正确的路径选择,看着会不舒服的……) /usr:系统级的目录,可以理解为C:/Windows/, ...

  3. Ubuntu命令行启动Matlab

    原文转自:http://blog.csdn.net/striker_v/article/details/52884485 小编安装的是Matlab R2015b,使用的是默认安装目录,安装在目录/us ...

  4. Bootstrap3 代码-内联代码

    通过 <code> 标签包裹内联样式的代码片段. For example, <section> should be wrapped as inline. For example ...

  5. GitLab服务器IP地址设置

    最近使用GitLab 搭建了Git的私有仓库,但是发现私有仓库的地址居然是localhost,不是本机的IP地址,最后百度了一下,找了很久才找到,特此记录一下. 首先说明一下,我linux虚拟机的IP ...

  6. Android Studio 中设置代码块自动补齐

    AS中很多提示键,并不如Eclipse中做的好,需要我们自己去自定义.这里以switch...case为例,讲解一下如何设置代码自动补全. 1.进入settings -->  Editor -- ...

  7. Oracle常用语句语法汇总

    第一篇  基本操作 --解锁用户   alter user 用户 account unlock; --锁定用户   alter user 用户 account lock; alter user sco ...

  8. [Pelican]Pelican入门(一)

    听说这个静态博客很好用,最近又在协助"蟒周刊"翻译,于是先学习下基本的用法 office site You can startup for here. 安装环境 我的os是win7 ...

  9. Java学习之参数传递详解

    Java中的参数传递问题: 基本类型:形式参数的改变对实际参数没有影响.在参数传递过程中,形参和实参占用了两个完全不同的内存空间. 引用类型:形式参数的改变直接影响实际参数.在参数传递的过程中,形参和 ...

  10. JDOM生成、解析XML实例

    import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import j ...