许多类在创建(实例化)带有配置对象的类时,都有快捷名称。快捷名称被称为 alias
(别名)(如果类扩展了 Ext.Component,则为 xtype
)。别名/xtype 列在适用类的类名旁边,以便快速参考。
框架类或其成员可以指定为 private
(私有)或 protected
(受保护)。否则,类/成员为 public
(公共)。Public
、protected
和 private
是访问描述符,用于传达类或类成员应如何以及何时使用。
Public(公共)类和类成员可供任何其他类或应用程序代码使用,并且在主要产品版本中可以作为稳定和持久的内容被依赖。公共类和成员可以通过子类安全地扩展。
Protected(受保护)类成员是稳定的 public
(公共)成员,旨在由拥有类或其子类使用。受保护的成员可以通过子类安全地扩展。
Private(私有)类和类成员在框架内部使用,不供应用程序开发人员使用。私有类和成员可能会在任何时候更改或从框架中省略,恕不另行通知,并且不应在应用程序逻辑中依赖它们。
static
(静态)标签。*请参阅下面的静态。下面是一个示例类成员,我们可以对其进行剖析以展示类成员的语法(在本例中是从 Ext.button.Button 类查看的 lookupComponent 方法)。
让我们看一下成员行的每个部分
lookupComponent
)( item )
)Ext.Component
)。对于除了 undefined
之外不返回任何内容的方法,可以省略此项,或者可以显示为由正斜杠 /
分隔的多个可能值,表示返回的内容可能取决于方法调用的结果(即,如果 get 方法调用成功,方法可能会返回 Component,如果失败则返回 false
,这将显示为 Ext.Component/Boolean
)。PROTECTED
- 请参阅下面的标志部分)Ext.container.Container
)。如果成员源自当前类,则源类将显示为蓝色链接;如果成员从祖先类或混入类继承,则显示为灰色。view source
)item : Object
)。undefined
以外的值,“返回值”部分将注释返回的类或对象类型以及描述(示例中为 Ext.Component
)Available since 3.4.0
- 示例中未显示),紧跟在成员描述之后Defaults to: false
)API 文档使用许多标志来进一步传达类成员的功能和意图。标签可以用文本标签、缩写或图标表示。
classInstance.method1().method2().etc();
false
,则标记为可阻止的事件将不会触发- 表示框架类
- 单例框架类。*有关更多信息,请参阅单例标志
- 组件类型框架类(Ext JS 框架中扩展 Ext.Component 的任何类)
- 表示类、成员或指南在当前查看的版本中是新的
- 表示类型为 config
的类成员
- 表示类型为 property
的类成员
- 表示类型为 method
的类成员
- 表示类型为 event
的类成员
- 表示类型为 theme variable
的类成员
- 表示类型为 theme mixin
的类成员
- 表示类、成员或指南在当前查看的版本中是新的
在 API 文档页面的类名正下方是一行按钮,对应于当前类拥有的成员类型。每个按钮显示按类型划分的成员计数(此计数在应用过滤器后会更新)。单击按钮将导航到该成员部分。将鼠标悬停在成员类型按钮上将显示该类型的所有成员的弹出菜单,以便快速导航。
与类配置选项相关的 Getter 和 Setter 方法将显示在方法部分以及 API 文档和成员类型菜单的配置部分中,就在它们所作用的配置下方。Getter 和 Setter 方法文档将在配置行中找到,以便于参考。
您的页面历史记录保存在本地存储中,并显示在顶部标题栏的正下方(使用可用的实际空间)。默认情况下,显示的唯一搜索结果是与您当前查看的产品/版本匹配的页面。您可以单击历史记录栏右侧的 按钮,然后选择“全部”单选按钮来扩展显示的内容。这将显示所有产品/版本的所有最近页面历史记录。
在历史记录配置菜单中,您还将看到最近页面访问的列表。结果按“当前产品/版本”和“全部”单选按钮过滤。单击 按钮将清除历史记录栏以及本地存储中保存的历史记录。
如果在历史记录配置菜单中选择“全部”,则将启用“在历史记录栏中显示产品详细信息”复选框选项。选中后,每个历史页面的产品/版本将与历史记录栏中的页面名称一起显示。将光标悬停在历史记录栏中的页面名称上也会显示产品/版本作为工具提示。
可以使用页面顶部的搜索字段搜索 API 文档和指南。
在 API 文档页面上,还有一个过滤器输入字段,该字段使用过滤器字符串过滤成员行。除了按字符串过滤外,您还可以按访问级别、继承和只读过滤类成员。这是通过使用页面顶部的复选框完成的。
API 类导航树底部的复选框过滤类列表,以包含或排除私有类。
单击空的搜索字段将显示您最近 10 次搜索,以便快速导航。
每个 API 文档页面(JavaScript 原始页面除外)都有一个菜单视图,其中包含与该类相关的元数据。此元数据视图将具有以下一项或多项
Ext.button.Button
类具有 Ext.Button
的备用类名称)。备用类名称通常为了向后兼容性而维护。可运行的示例 (Fiddles) 默认在页面上展开。您可以使用代码块左上角的箭头单独折叠和展开示例代码块。您还可以使用页面右上角的切换按钮切换所有示例的折叠状态。切换所有状态将在页面加载之间记住。
类成员默认在页面上折叠。您可以使用成员行左侧的箭头图标展开和折叠成员,或使用右上角的展开/折叠所有切换按钮全局展开/折叠成员。
在较窄的屏幕或浏览器上查看文档将导致针对较小外形尺寸优化的视图。桌面视图和“移动”视图之间的主要区别在于
可以通过单击 API 文档页面顶部的类名来查看类源代码。可以通过单击成员行右侧的“查看源代码”链接来查看类成员的源代码。
本指南逐步介绍了将 Sencha Cmd 与 Ext JS 6 应用程序结合使用的过程,从 sencha generate app
命令开始,到运行应用程序结束。
本指南末尾介绍了将现有(非 Sencha Cmd)应用程序升级为符合 Sencha Cmd 期望的过程。重要的是首先了解“理想”或“默认”结构作为比较点。这种默认结构与现有应用程序的结构之间的差异是推动现有应用程序升级过程的原因。
建议在继续阅读之前阅读以下指南
我们的起点是生成应用程序骨架。这可以使用以下命令完成
sencha -sdk /path/to/ext6 generate app MyApp /path/to/my-app
要使用试用版,您可以同时使用此命令自动下载它
sencha generate app -ext MyApp /path/to/my-app
如果您购买了商业版,则需要下载 Ext JS ZIP 存档并使用显示的第一个命令。
上述命令生成的应用程序文件将具有以下结构
.sencha/ # Sencha-specific files (primarily configuration)
app/ # Application-specific content
sencha.cfg # Application configuration file for Sencha Cmd
Boot.js # Private, low-level dynamic loader for JS and CSS
Microloader.js # Loads app based on app.json content
build-impl.xml # Standard application build script
*-impl.xml # Implementations of various build phases
defaults.properties # Default values and docs for build properties
ext.properties # Build property values specific to Ext JS
*.defaults.properties # Build properties by environment (e.g. "testing")
plugin.xml # Application-level plugin for Sencha Cmd
codegen.json # Data for merging generated code during upgrade
workspace/ # Workspace-specific content (see below)
sencha.cfg # Workspace configuration file for Sencha Cmd
plugin.xml # Workspace-level plugin for Sencha Cmd
ext/ # A copy of the Ext JS SDK
cmd/ # Framework-specific content for Sencha Cmd
sencha.cfg # Framework configuration file for Sencha Cmd
classic/ # Packages related to the Classic Toolkit
classic/ # Ext JS Classic Toolkit package
theme-neptune/ # Classic Toolkit Theme Package for Neptune
theme-triton/ # Classic Toolkit Theme Package for Triton
...
modern/ # Packages related to the Modern Toolkit
modern/ # Ext JS Modern Toolkit package
theme-neptune/ # Modern Toolkit Theme Package for Neptune
theme-triton/ # Modern Toolkit Theme Package for Triton
...
packages/ # Framework supplied packages
charts/ # Charts package
ux/ # Contents of "Ext.ux" namespace
...
index.html # The entry point to your application
app.json # Application manifest
app.js # Launches the Application class
app/ # Your application's source code in MVC structure
model/ # Folder for application model classes
store/ # Folder for application stores
view/ # Folder for application view classes
main/ # Folder for the classes implementing the Main View
Main.js # The Main View
MainModel.js # The `Ext.app.ViewModel` for the Main View
MainController.js # The `Ext.app.ViewController` for the Main View
Application.js # The `Ext.app.Application` class
packages/ # Sencha Cmd packages
workspace.json # Workspace JSON descriptor
build/ # The folder where build output is placed
在单页应用程序中,工作区和应用程序内容之间没有区别。要了解有关工作区的更多信息,请参阅 Sencha Cmd 中的工作区。
注意: 以上说明将生成通用应用程序。这意味着 classic 和 modern 工具包都有单独的“view”文件夹,并具有中央共享核心。要创建单工具包应用程序,只需将工具包名称附加到 generate 命令即可。
sencha -sdk /path/to/ext generate app classic MyApp /path/to/MyApp
sencha -sdk /path/to/ext generate app modern MyApp /path/to/MyApp
构建应用程序所需的全部操作是运行以下命令
sencha app build
此命令将您的标记页面、JavaScript 代码和主题构建到 "build"
文件夹中。
重要提示。 为了执行此命令,当前目录必须是应用程序的顶层文件夹(在本例中为 "/path/to/my-app"
)。
重要提示 对于 sencha app
命令,请勿指定 -sdk
参数。由于这些命令必须从应用程序的根文件夹运行,因此 Sencha Cmd 知道要使用哪个 SDK。在这些命令上使用 -sdk
会导致 Sencha Cmd 认为您的当前目录是指定的 SDK,这不是应用程序的正确当前目录。
Sencha Cmd 根据您的 "app.json"
文件和应用程序中的源代码生成所谓的“引导程序”。引导程序将此信息传递给动态类加载器(Ext.Loader
和 Microloader),因此您不必手动维护此信息。
引导程序不受 JavaScript 源代码更改的影响,因此“编辑、保存、重新加载、重复”的正常工作流程按预期工作。偶尔,样式更改或 JavaScript 代码的移动和重命名会使此引导程序信息或运行应用程序所需的生成的 CSS 无效。
有两种更新引导程序的基本方法。
使您的应用程序在浏览器中可运行的最简单方法是运行 app watch
sencha app watch
此命令将首先执行“开发构建”(见下文),但 app watch
不会返回到命令提示符,而是等待并监视对其刚刚构建的任何文件的更改。
Watch 还启动内部 Sencha Cmd Web 服务器,以通过“http:”从您的工作区提供文件。此 Web 服务器使用默认端口 1841。
要访问 Sencha Cmd Web 服务器,请使用
https://127.0.0.1:1841/
Watch 运行直到使用 Ctrl+C 停止。
使用 app watch
,您还可以启用 Fashion 并使用 Live Update 使您的 CSS 在更改时保持最新。
如果您想手动更新引导程序和 CSS,可以使用两个命令
sencha app build development
sencha app refresh
app refresh
命令仅更新引导程序的 JavaScript 部分。这是运行速度最快的更新,并且是由于重命名或其他代码移动而更改类位置时所需要的全部操作。
app build development
命令将执行 refresh
,但也会编译您的样式以生成新的 CSS 文件。
sencha generate
命令可帮助您快速生成常见的 MVC 组件,例如控制器或模型
sencha help generate
您应该看到这个
Sencha Cmd vX.Y.Z.nnn
sencha generate
This category contains code generators used to generate applications as well
as add new classes to the application.
Commands
* app - Generates a starter application
* controller - Generates a Controller for the current application
* form - Generates a Form for the current application (Sencha Touch Specific)
* model - Generates a Model for the current application
* package - Generates a starter package
* profile - Generates a Profile for the current application (Sencha Touch Specific)
* theme - Generates a theme page for slice operations (Ext JS Specific)
* view - Generates a View for the current application (Ext JS Specific)
* workspace - Initializes a multi-app workspace
重要提示。 为了执行下面讨论的命令,控制台上的当前目录必须在您的应用程序内部(在本例中为“/path/to/MyApp”)。
将模型添加到您的应用程序是通过将 "/path/to/MyApp"
作为您的当前目录并运行 Sencha Cmd 来完成的,如下所示
cd /path/to/MyApp
sencha generate model User id:int,name,email
此命令添加一个名为 User
的模型类,其中包含给定的 3 个字段。
注意。 这是唯一与 Sencha Architect 项目兼容的 generate
命令。此命令的典型用途是自动化或脚本化 Sencha Architect 中数据模型的创建。
向您的应用程序添加视图是类似的
cd /path/to/MyApp
sencha generate view foo.Thing
以上将生成以下文件
app/
view/
foo/ # Folder for the classes implementing the new view
Thing.js # The new view
ThingModel.js # The `Ext.app.ViewModel` for the new view
ThingController.js # The `Ext.app.ViewController` for the new view
在这种情况下,除了视图名称之外,没有必需的参数。但是,您可以根据需要添加基类
cd /path/to/MyApp
sencha generate view -base Ext.tab.Panel foo.Thing
这将更改视图类使用的 extend
以使用 Ext.tab.Panel
。
注意。 此命令不 与 Sencha Architect 项目兼容。
在 Ext JS 5+ 中,Sencha Cmd 生成的每个视图都有一个默认的 Ext.app.ViewController
,因此在大多数情况下,不需要基于 Ext.app.Controller
生成全局控制器。如果您需要新的控制器,您可以像模型和视图一样以相同的方式生成一个控制器
cd /path/to/MyApp
sencha generate controller Central
在这种情况下,除了控制器名称之外,没有其他参数。
注意。 此命令不 与 Sencha Architect 项目兼容。
当您需要自定义构建时,首先要查看的是 "app.json"
。此文件包含许多选项和相关文档。还有一个包含其他设置的 "workspace.json"
文件。
不建议超出 ".json"
文件范围,但在某些情况下可能是必需的。如果您需要修改应用程序或工作区的 ".sencha"
文件夹中的文件,您最终可能会得到不受支持的配置。在以前的版本中,".sencha/app/*.properties"
文件、".sencha/app/sencha.cfg"
文件和 ".sencha/workspace/sencha.cfg"
文件偶尔会被修改。使用 Sencha Cmd 6,应避免这种做法。
如果仅通过修改 JSON 描述符无法重现问题,Sencha 支持可能会选择关闭工单。如果 JSON 文件中存在您无法完成的任务,请在我们的 论坛 或 支持门户 中提交功能请求。
sencha app build
命令知道在哪里查找应用程序的源代码,这归功于存储在 "app.json"
中的 classpath
属性。默认情况下,此值为
"classpath": [
"app",
"${toolkit.name}/src"
],
将目录添加到此数组会通知编译器在哪里查找构建应用程序所需的源代码。
要了解有关 Sencha Cmd 提供的构建过程的更多信息,请参阅 应用程序构建过程内幕。
生成的应用程序包括两种与 Sencha Cmd 相关的主要内容:构建脚本(或脚手架)和使用的 Sencha SDK 的重要内容。因此,您偶尔需要升级这些部分。您可以使用以下命令执行此操作
sencha app upgrade [ path-to-new-framework ]
“path-to-new-framework”是可选的,用于升级 Sencha Cmd 脚手架和应用程序使用的框架。
有关更多详细信息,请参阅 了解应用程序升级。
Sencha Cmd 生成的脚手架的关键部分是这些
.sencha/
app.json
build.xml
index.html
前三项可以简单地从生成到临时文件夹的应用程序中复制。现有应用程序通常会有一个标记入口页面,如果不是 "index.html"
,您可以将以下内容添加到您的 "app.json"
{
...
"indexHtmlPath": "index.php"
}
当然,该值应该是应用程序的正确值。但是,为了使生成的构建脚本能够理解此标记文件,该文件应包含在生成的 "index.html"
中找到的标准样板
<script id="microloader" type="text/javascript" src="bootstrap.js"></script>
在开发模式下,这将加载一个由 Sencha Cmd 在 sencha app build
或 sencha app refresh
期间生成的文件。sencha app build
命令是一个完整的构建,其中包括作为一步的“refresh”操作。
现有应用程序的几个部分可能与 Sencha Cmd 应用程序的默认结构不匹配。此时,有两种路径需要考虑
有关如何配置构建过程的详细信息,请查阅 应用程序构建过程内幕。
如果无法使现有应用程序符合构建脚本的期望(无论是通过重构应用程序还是配置构建),Sencha Cmd 仍然具有可通过低级命令访问的有用功能。
有关更低级别的详细信息,请参阅