SharePoint 框架 v1.15 发行说明

此版本引入了有关 Microsoft Viva、Microsoft Teams 和 SharePoint 的功能的更新。

发布时间:2022 年 6 月 21 日

重要

此页面提供与特定 SPFx 发行版本相关的详细信息。 此页面不包含开发 SPFx 解决方案(包括 SPFx Node.js、Yeoman 和其他工具)而必须安装的其他 SPFx 必备组件。

若要了解有关这些必备组件的详细信息,请参阅设置 SharePoint 框架开发环境

安装最新发布的版本

通过包含 @latest 标记安装 SharePoint 框架 (SPFx) 的最新版本:

npm install @microsoft/generator-sharepoint@latest --global

将项目从 v1.14 升级到 v1.15

  1. 在项目的 package.json 文件中,标识所有 SPFx v1.14 包。 对于每个 SPFx 程序包:
    1. 卸载现有 v1.14 包:

      npm uninstall @microsoft/{spfx-package-name}@1.14
      
    2. 安装新的 v1.15 包:

      npm install @microsoft/{spfx-package-name}@latest --save --save-exact
      

提示

适用于 Microsoft 365 的 CLI 提供了一个简单的分步指南,可用于将你的解决方案升级到最新 SharePoint 框架版本。

新增特性和功能

表单自定义工具扩展

表单自定义工具扩展允许开发人员自定义新建、编辑和显示列表和文档库的表单。

注意

你可以从以下 YouTube 视频中查看此功能的实时演示 - 开始使用 SPFx v1.15 生成自定义列表表单组件

Node.js v16 支持

SharePoint 框架解决方案现在支持 Node.js v16 作为默认 Node.js 版本。

Microsoft Graph JavaScript SDK v3 支持

MSGraphClientFactory 允许开发人员选择要使用的 Microsoft Graph JavaScript SDK 版本。

注意

从 SPFx 1.15 开始,仅支持 Microsoft Graph JavaScript SDK 的 v3。 已删除对所有新解决方案和更新解决方案的 v1 支持。 请相应地更新代码以获取正确的版本。

this.context.msGraphClientFactory.getClient('3');

TypeScript v4 支持

SharePoint 框架解决方案现在支持 TypeScript v4.5

ESLint 支持

SPFx 解决方案现在支持 ESLint 8.x,而不是已弃用的 TSLint

已更新 Microsoft Teams JavaScript 客户端 SDK

SharePoint 框架解决方案现在支持 Microsoft Teams JavaScript 客户端 SDK v1.12.1

更新的命令集扩展模板

模板已更新为使用 listViewStateChanged 事件,而不是弃用 onListViewUpdated 的事件。

对基架选项和提示进行了更改

  • 新命令行选项: --use-heft。 如果已指定,则解决方案将使用 Heft 生成项目。

映像帮助程序 API - 正式发布

添加了 @microsoft/sp-image-helper) 中的 ImageHelper 静态类 (,以允许 SPFx 开发人员在运行时访问:

  • 存储在 SharePoint 中的页面和文档的自动生成缩略图图像的 Url
  • 存储在 SharePoint 中的图像的更优化 Url

帮助程序方法 ImageHelper.convertToImageUrl() 采用指向 SharePoint 上资产的 Url、宽度和可选高度,并将执行客户端操作以尝试创建优化的 Url。

生成的 Url 将指向接近请求大小的图像。 生成的 Url 还将包括使用其他 SharePoint 媒体和图形服务。 如果可用于请求的资产、公共或私有 CDN 位置,以提供调整大小的图像和缩略图。

适用于地理位置的新操作类型

地理位置操作的支持矩阵如下所示:

操作 Viva Connection Desktop Viva Connections Mobile 浏览器
获取位置 不支持 支持 支持
显示位置 不支持 支持 支持
    ISPFxAdaptiveCard.actions?: (
        | ISubmitAction
        | IOpenUrlAction
        | IShowCardAction
        | IGetLocationAction // Get a location
        | IShowLocationAction // Show a location on a map
    )[];

可按如下所示配置位置操作:

  "actions": [
    {
      "type": "VivaAction.GetLocation",
      "id": "Get Location",
      "title": "Where am I",
      "parameters": {
        "chooseLocationOnMap": true
      }
    },
    {
      "type": "VivaAction.ShowLocation",
      "id": "Show Location",
      "title": "Continue",
      "parameters": {
        "locationCoordinates": {
          "latitude": 40,
          "longitude": 40
        }
      }
    }
  ]

操作将按以下方式呈现:

位置操作的屏幕截图

位置操作:

位置操作可用于获取当前位置、在地图上显示当前位置或自定义位置,以及从地图中选择当前位置。 在浏览器中,它使用必应地图作为映射接口:

位置面板的屏幕截图

预览特性和功能

以下功能作为 1.15 版本的一部分仍处于预览状态,不应在生产中使用。 我们正在考虑在即将发布的 1.16 版本中正式发布它们。

自适应卡片扩展卡片视图缓存

为了提高性能,SPFx 现在支持自适应卡扩展卡视图的本地缓存。 加载自适应卡扩展时,将立即呈现缓存的卡片视图。 加载自适应卡扩展后,它可以选择更新卡片视图。

interface ICacheSettings {
  /**
   * Whether cache is enabled. Default: true
   */
  isEnabled: boolean;

  /**
   * Expiry time in seconds. Default: 86400 seconds (24 hours)
   */
  expiryTimeInSeconds: number;

  /**
   * Returns the Card View used to generate the cached card.
   * By default, the currently rendered Card View will be used to cache the card.
   */
  cachedCardView?: () => BaseCardView;
}

BaseAdaptiveCardExtension.getCacheSettings(): Partial<ICacheSettings>;

默认情况下,使用默认设置启用缓存。 自适应卡扩展可以通过替代 getCacheSettings 来自定义其缓存设置,以退回要替代的设置。

在不应缓存最后一个已知卡片视图时,可以通过 ICacheSettings.cachedCardView 提供要缓存并在下一页面加载时显示的特定卡片视图。 此卡片视图不需要事先注册。

自适应卡扩展还可以在本地缓存其当前状态。 默认情况下,不缓存任何状态。

BaseAdaptiveCardExtension.getCachedState(state: TState): Partial<TState>;

如果替代了 getCachedState,则在下一页加载时初始化自适应卡扩展时,将提供缓存的值。

onInit 具有新的重载,用来传递有关缓存的卡状态的信息。 如果未从缓存的卡片视图加载卡,则 cachedLoadParameters 将为 undefined

interface ICachedLoadParameters {
    state: TState;
}

BaseAdaptiveCardExtension.onInit(cachedLoadParameters?: ICachedLoadParameters): Promise<void>;

自适应卡片扩展的初始状态可以从缓存状态设定种子。 缓存状态还可用于确定是否需要执行任何进一步的逻辑。

状态缓存和缓存过期时间可用于确定自适应卡扩展何时需要进行昂贵的远程调用。

缓存有助于显著提高自适应卡扩展的感知性能。

错误处理程序方法

当操作引发错误时,将调用此方法。

BaseView.onActionError(error: IActionErrorArguments): void

重写此方法以处理自适应卡操作中的错误。

适用于媒体的新操作类型

正式发布后,媒体操作的支持矩阵将如下所示:

操作 Viva Connection Desktop Viva Connections Mobile 浏览器
选择媒体 支持 支持 支持

可按如下所示配置 SelectMedia:

"actions": [
    {
      "type": "VivaAction.SelectMedia",
      "id": "Select Files",
      "parameters": {
        "mediaType": "MediaType.Image",
        "allowMultipleCapture": true,
        "maxSizePerFile": 200000,
        "supportedFileFormats": [
          "jpg"
        ]
      },
      "title": "Select Files"
    }
]

选择媒体操作呈现:

文件操作的屏幕截图

选择媒体操作可用于从本机设备中选择图像。 在浏览器中,它使用文件选取器来帮助访问重复的文件:

媒体面板的屏幕截图

弃用

  • 由于运行时性能开销,已弃用 SPComponentLoadergetManifests() 方法。
  • 已从 @microsoft/sp-http - MSGraphClientFactory.getClient() 中删除 API

已修复问题

2 月到 5 月时间范围

  • #7680 - 不会立即在 SP (或) 内容页上加载主题颜色
  • #6403 - 如果释放,DynamicData.tryGetValue () 不应失败
  • #5979 - 删除选项卡时弹出SPFx Teams问题
  • #7679 - 搜索时字段定制器不一致地加载
  • #7689 - [SPFx-Heft-Plugins][SPFx 1.13.1] 元素引用外部文件路径时在 Windows 和 Linux 上解析的路径不同
  • #7771 - SPFx v1.14.0:图像帮助程序 API,btoa 例外,string 包含 Latin1 范围外的字符
  • #7684 - Microsoft Teams 中的 SPFx 应用身份验证错误 (sso-getAdalSsoToken-receive)
  • #7739 - 从网站主页上的 LHN 链接导航时,CommandSet 扩展在文档库中不起作用
  • #7794 - listViewStateChangedEvent 不会触发分组列表视图
  • #7805 - SPFx 正在为某些用户加载库组件旧版本
  • #7795 - this.context.pageContext.list.serverRelativeUrl 不会刷新
  • #7827 - deploy-azure-storage 命令始终创建公共访问级别为“专用”而不是 Blob 的容器
  • #7826 - [SPFx 1.15.0-beta.1] 包解决方案在从外部文件夹引用 elements.xml 文件且 sharepoint/assets 不存在时失败
  • #6477 - 订阅具有传输错误的列表通知
  • #7845 - command.disabled 并不总是遵守
  • #6807 - SharePoint SPFx Web 部件似乎正在浏览器中占用所有 sessionStorage
  • #7950 - config.json 中的 globalDependecies 不起作用
  • #7949 - command.disabled 仍然无法正常工作
  • #7974 - 如果直接加载文件夹,则未定义属性 folderInfo