文档帮助

术语、图标和标签

许多类在使用配置对象创建(实例化)类时都有快捷名称。快捷名称被称为 alias(如果类扩展了 Ext.Component,则称为 xtype)。别名/xtype 列在适用类的类名旁边,以便快速参考。

访问级别

框架类或其成员可以指定为 privateprotected。否则,类/成员为 publicPublicprotectedprivate 是访问描述符,用于传达应该如何以及何时使用类或类成员。

成员类型

成员语法

下面是一个示例类成员,我们可以剖析它来展示类成员的语法(在本例中是从 Ext.button.Button 类查看的 lookupComponent 方法)。

lookupComponent ( item ) : Ext.Component
受保护的

当原始配置对象添加到此容器时调用,无论是在 items 配置的初始化期间,还是在 添加新项目或 {@link #insert 插入} 时。

此方法将传递的对象转换为实例化的子组件。

当需要对子创建应用特殊处理时,可以在子类中覆盖此方法。

参数

item :  Object

正在添加的配置对象。

返回值
Ext.Component

要添加的组件。

让我们看看成员行的每个部分

成员标志

API 文档使用许多标志来进一步传达类成员的功能和意图。标签可以用文本标签、缩写或图标表示。

类图标

- 表示框架类

- Singleton 框架类。*有关更多信息,请参阅 singleton 标志

- 组件类型的框架类(Ext JS 框架中扩展 Ext.Component 的任何类)

- 表示类、成员或指南是当前查看版本中的新内容

成员图标

- 表示 config 类型的类成员

- 表示 property 类型的类成员

- 表示 method 类型的类成员

- 表示 event 类型的类成员

- 表示 theme variable 类型的类成员

- 表示 theme mixin 类型的类成员

- 表示类、成员或指南是当前查看版本中的新内容

类成员快速导航菜单

在 API 文档页面上的类名正下方是一行按钮,对应于当前类拥有的成员类型。每个按钮都显示按类型划分的成员计数(此计数会随着应用过滤器而更新)。单击按钮将导航到该成员部分。将鼠标悬停在成员类型按钮上将显示该类型的所有成员的弹出菜单,以便快速导航。

Getter 和 Setter 方法

与类配置选项相关的 Getting 和 setter 方法将在方法部分以及 API 文档和成员类型菜单的配置部分中显示,就在它们所使用的配置下方。getter 和 setter 方法文档将在配置行中找到,以便于参考。

历史记录栏

您的页面历史记录保存在本地存储中,并在顶部标题栏正下方显示(使用可用的实际空间)。默认情况下,显示的唯一搜索结果是与您当前查看的产品/版本匹配的页面。您可以通过单击历史记录栏右侧的 按钮并选择“全部”单选按钮来扩展显示的内容。这将显示所有产品/版本历史记录栏中的所有最近页面。

在历史记录配置菜单中,您还将看到最近页面访问的列表。结果按“当前产品/版本”和“全部”单选按钮过滤。单击 按钮将清除历史记录栏以及本地存储中保存的历史记录。

如果在历史记录配置菜单中选择了“全部”,“在历史记录栏中显示产品详细信息”的复选框选项将启用。选中后,每个历史页面的产品/版本将与历史记录栏中的页面名称一起显示。将光标悬停在历史记录栏中的页面名称上也会将产品/版本显示为工具提示。

搜索和过滤器

可以使用页面顶部的搜索字段搜索 API 文档和指南。

在 API 文档页面上,还有一个过滤器输入字段,该字段使用过滤器字符串过滤成员行。除了按字符串过滤外,您还可以按访问级别、继承和只读过滤类成员。这是通过使用页面顶部的复选框完成的。

API 类导航树底部的复选框过滤类列表以包含或排除私有类。

单击空的搜索字段将显示您最近 10 次搜索,以便快速导航。

API 文档类元数据

每个 API 文档页面(Javascript 原始页面除外)都有一个与该类相关的元数据菜单视图。此元数据视图将具有以下一项或多项

展开和折叠示例和类成员

可运行的示例 (Fiddles) 默认在页面上展开。您可以使用代码块左上角的箭头单独折叠和展开示例代码块。您还可以使用页面右上角的切换按钮切换所有示例的折叠状态。切换所有状态将在页面加载之间记住。

类成员默认在页面上折叠。您可以使用成员行左侧的箭头图标或全局使用右上角的展开/折叠所有切换按钮来展开和折叠成员。

桌面 -vs- 移动视图

在较窄的屏幕或浏览器上查看文档将导致针对较小外形尺寸优化的视图。桌面和“移动”视图之间的主要区别在于

查看类源代码

可以通过单击 API 文档页面顶部的类名来查看类源代码。可以通过单击成员行右侧的“查看源代码”链接来查看类成员的源代码。

Cmd 7.8.0


顶部

使用 Sencha Cmd 构建渐进式 Web 应用

Cmd 6.5+ 帮助您将任何 Ext JS 应用程序转变为渐进式 Web 应用。

渐进式 Web 应用使用现代 Web 技术提供原生应用程序体验。Google 提供了对渐进式 Web 应用的精彩介绍:您的第一个渐进式 Web 应用

Cmd 专门允许开发人员

  • 显示应用程序横幅,邀请 Android 用户将应用程序安装到他们的主屏幕。

  • 通过基于 service-worker 的缓存为支持此功能的浏览器提供离线支持。

注意: 您必须首先在本地安装 Node JS 才能使用 Cmd 渐进式 Web 应用集成。

要求

使用渐进式 Web 应用功能需要 Node JS 6+

添加到主屏幕横幅

要向您的应用程序添加“添加到主屏幕”横幅,请将 progressive 配置对象添加到您的 app.json。progressive 配置对象有两个项目:manifest 和 serviceWorker。manifest 配置包含 web app manifest 的数据。一旦此配置到位,Cmd 会在构建时自动将必需的 <link rel=”manifest”/> 标记添加到您应用程序的 index.html 文件中。

web app manifest 的存在并不一定意味着受支持的浏览器会立即显示添加到主屏幕横幅。例如,Chrome 使用一组标准,包括 service worker 的使用、SSL 状态和访问频率启发式方法来确定何时 显示横幅

示例

"progressive": {
    "manifest": {

        "name": "My App",
        "short_name": "My App",
        "icons": [{
            "src": "resources/icon-small.png",
            "sizes": "96x96"
        }, {
            "src": "resources/icon-medium.png",
            "sizes": "192x192"
        }, {
            "src": "resources/icon-large.png",
            "sizes": "256x256"
        }],
        "theme_color": "#054059",
        "background_color": "#054059",
        "display": "standalone",
        "orientation": "portrait",
        "start_url": "/index.html"
    }
}

使用 Service Workers 进行缓存

注意:sw-precache 的使用已被弃用,转而使用 Workbox。Sencha Cmd 将在即将发布的版本中支持 Workbox。

渐进式 Web 应用最重要的功能也许是提供离线功能。通常,这是通过缓存应用程序 shell(显示您的应用程序所需的 HTML、JavaScript、CSS、字体和图像资源)以及内容来完成的,这些内容通常通过 AJAX 调用 REST API 来检索。

渐进式 Web 应用使用 service workers 来提供缓存。当“progressive”配置存在于您的 app.json 中时,Cmd 会在构建时使用 sw-precache 创建一个 service worker,该 service worker 会自动缓存应用程序 shell。您还可以通过在您的代码中添加 @sw-cache 注释来让 service worker 缓存 AJAX 请求。

// @sw-cache

想象一下一家商店,它从服务器检索即将发生的事件列表。我们可以让 Cmd 生成的 service worker 缓存 API 调用,以便在离线时结果可用,方法是将 @sw-cache 注释添加到 url

Ext.define('App.store.UpcomingEvents', {
    extend: 'Ext.data.Store',
    proxy: {
        type: 'ajax',

        // @sw-cache
        url: '/api/upcoming-events.json',
        reader: {
            type: 'json'
        }
    }
});

@sw-cache 注释可以放在任何字符串或对象属性之上。它所附加到的字符串应该是要缓存的 url。当 url 是动态的时(例如,它在路径或查询字符串中包含 id),您可以选择指定“urlPattern”配置来控制缓存哪些请求。例如,想象一下针对特定事件的 AJAX 请求

Ext.define('App.model.Event', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'date'],

    proxy: {
        type: 'rest',

        // @sw-cache { urlPattern: "\\/api\\/events\\/\\d+" }
        url : '/events'
    }
});

控制缓存行为

@sw-cache 注释接受许多选项

  • urlPattern:一个正则表达式,当匹配时,会导致响应被缓存

  • handler:默认为“networkFirst”。可以是以下之一

    • networkFirst 尝试通过从网络获取来处理请求。如果成功,将响应存储在缓存中。否则,尝试从缓存中满足请求。这是用于基本直读式缓存的策略。它也适用于 API 请求,在 API 请求中,您始终希望在可用时获得最新鲜的数据,但宁愿拥有陈旧的数据也不愿没有数据。

    • cacheFirst 如果请求与缓存条目匹配,则使用该条目进行响应。否则,尝试从网络获取资源。如果网络请求成功,则更新缓存。此选项适用于不更改或具有某些其他更新机制的资源。

    • fastest 并行地从缓存和网络请求资源。使用首先返回的任何一个进行响应。通常,这将是缓存版本(如果存在)。一方面,即使资源被缓存,此策略也将始终发出网络请求。另一方面,如果/当网络请求完成时,缓存将被更新,以便将来的缓存读取将是最新的。

    • cacheOnly 从缓存中解析请求,否则失败。当您需要保证不会发出网络请求时,此选项非常有用,例如在移动设备上节省电池电量。

    • networkOnly 尝试从网络获取 URL 来处理请求。如果获取失败,则请求失败。本质上,与根本不为 URL 创建路由相同。

  • options:具有以下属性的对象

    • debug [Boolean] 确定是否将额外信息记录到浏览器的控制台。

    • networkTimeoutSeconds [Number] 应用于 toolbox.networkFirst 内置处理程序的超时。如果设置了 networkTimeoutSeconds,则任何花费的时间超过该时间的网络请求都将自动回退到缓存的响应(如果存在)。当未设置 networkTimeoutSeconds 时,将应用浏览器的本机网络超时逻辑。

    • cache [Object]

      • name [String] 用于存储 Response 对象的 Cache 的名称。使用唯一名称允许您自定义缓存的最大大小和条目的生存期。
      • maxEntries [Number] 对通过各种内置处理程序缓存的条目强制执行最近最少使用的缓存过期策略。您可以将此与专用于存储动态资源集条目且没有自然限制的缓存一起使用。将 cache.maxEntries 设置为例如 10 将意味着在缓存第 11 个条目后,最近最少使用的条目将自动删除。缓存永远不应超出 cache.maxEntries 条目。仅当也设置了 cache.name 时,此选项才会生效。它可以单独使用,也可以与 cache.maxAgeSeconds 结合使用。
      • maxAgeSeconds [Number] 对缓存条目强制执行最大生存期(以秒为单位)。您可以将此与专用于存储动态资源集条目且没有自然限制的缓存一起使用。将 cache.maxAgeSeconds 设置为例如 86400 将意味着任何超过一天的条目都将自动删除。仅当也设置了 cache.name 时,此选项才会生效。它可以单独使用,也可以与 cache.maxEntries 结合使用。

示例:限制 API 调用的缓存响应数量

如果我们只想缓存最近访问的十个即将发生的事件,我们可以通过添加

options: { cache: { name: ‘events’, maxEntries: 10 } }

到我们的 @sw-cache 注释来实现这一点。例如

Ext.define('App.model.Event', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'date'],

    proxy: {
        type: 'rest',
        // @sw-cache { urlPattern: "\\/api\\/events\\/\\d+", options: { cache: { name: 'events', maxEntries: 10 } } }
        url : '/events'
    }
});

注意: 在添加 @sw-cache 注释或更改 app.json 后,您需要运行“sencha app build”来测试您的更改。service-worker 仅包含在您应用程序的生产版本中。这是因为开发版本将每个代码文件作为单独的请求加载,因此在运行开发版本时,不可能预缓存应用程序 shell 所需的所有资源。请务必使用生产版本来测试缓存行为。

注意: 构建完成后,应用程序的首次重新加载将拾取对 progressive manifest 和缓存的更改。由于 service-worker 是在您在浏览器中重新加载应用程序时异步获取和安装的,因此它可能最初不会缓存在您的应用程序启动时发出的 API 调用。您可能需要第二次重新加载您的浏览器才能缓存启动期间发出的 API 调用。

serviceWorker 配置

除了 @sw-cache 注释之外,您还可以通过将 runtimeCaching 属性添加到 app.json 中的 progressive.serviceWorker 部分来配置 service worker 缓存请求。支持上面描述的所有选项。
因此,例如,要缓存即将发生的事件列表以及最近查看的十个事件的数据,您可以将以下内容添加到您的 app.json 中,而不是将 @sw-cache 注释添加到您的 store 和 model 类中。

这是一个包含 manifest 和 serviceWorker 配置的完整示例。

"progressive": {

    "manifest": {

        "name": "My App",
        "short_name": "My App",

        "icons": [{
            "src": "resources/icon-small.png",
            "sizes": "96x96"
        }, {
            "src": "resources/icon-medium.png",
            "sizes": "192x192"
        }, {
            "src": "resources/icon-large.png",
            "sizes": "256x256"
        }],

        "theme_color": "#054059",
        "background_color": "#054059",
        "display": "standalone",
        "orientation": "portrait",
        "start_url": "/index.html"
    },

    "serviceWorker": {

        "runtimeCaching": [
            {
                "urlPattern": "\\/api\\/events"
            }, 
            {
                "urlPattern": "\\/api\\/events\\/\d+",
                "options": {
                    "cache": {
                        "name": "events",
                        "maxEntries": 10
                    }
                }
            }
        ]
    }
}

注意:虽然您可以使用 app.json 中的 runtimeCaching 配置和 @sw-cache 注释来指定缓存行为,但 @sw-cache 注释将优先。因此,我们建议为您的应用程序选择一种方法,而不是混合使用两种方法。

Cmd 7.8.0