SharePoint 框架 v1.8.0 发行说明

我们将在接下来的几天和几周内发布更多更新的文档和指导视频。 我们非常欢迎你对所需资产和主题的反馈。

发布日期: 2019 年 3 月 14 日

重要

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

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

将项目从 v1.7.1 升级到 v1.8.0

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

    1. 卸载现有的 v1.7.1 包:

      npm uninstall @microsoft/{spfx-package-name}@1.7.1
      
    2. 安装刷新后的 v1.8.0 程序包:

      npm install @microsoft/{spfx-package-name}@1.8.0.0 --save --save-exact
      
  2. 请确保 package.jsondevDependency 节中有一个条目引用 "@microsoft/sp-tslint-rules": "1.8.0"

  3. @microsoft/rush-stack-compiler-x-x 包添加为 devDependencypackage.json 中的 。 请参阅 支持 TypeScript 2.7、2.9 和 3.x (通用) 一节,了解正确使用的版本。

  4. 更新 tsconfig.json 文件,以扩展 @microsoft/rush-stack-compiler-x 版本的 TypeScript 配置。 通过修改文件的顶部来实现这一点,如下所示:

    • 对于 @microsoft/rush-stack-compiler-2-7tsconfig.json 文件的顶部将类似于

      {
         "extends": "./node_modules/@microsoft/rush-stack-compiler-2.7/includes/tsconfig-web.json",
         "compilerOptions": { // ommitted for brevity }
      }
      
    • 对于 @microsoft/rush-stack-compiler-3-3tsconfig.json 文件的顶部将如下所示

      {
         "extends": "./node_modules/@microsoft/rush-stack-compiler-3.3/includes/tsconfig-web.json",
         "compilerOptions": { // ommitted for brevity }
      }
      
  5. 修复所有现在在较新编译器中所提出的新的和有趣的 tslint 错误。 对于大型项目,这可能需要一段时间。 TypeScript 编译器的默认行为越来越严格,但代码会因此变得越来越好。

提示

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

新增特性和功能

为 Teams 开发的 SPFx 选项卡 (正式版)

现在完全支持使用 SPFx 的 Teams 选项卡解决方案。 添加 TeamsTab 到 web 部件清单中的 supportedHosts 属性,并将其部署到应用目录中。 从那里,可以选择解决方案并点击“同步到 Teams”按钮。 Web 部件现在将作为应用程序出现在 Teams 中。 当 Web 部件托管在 Team 选项卡中时,它将通过 Web 部件的上下文访问 Team SDK。 与 1.7 beta 版本相比,有以下变化:

  • 初始和未来的配置是使用属性窗格处理的
  • 可将清单属性 canUpdateConfiguration 设置为 false,以便在初始配置后禁用配置
  • 减少了用于托管 Web 部件的 JavaScript 开销
  • “同步到 Teams”功能可自动创建和上传 Teams 清单
  • 更新 teams-js 至 v1.4.1
  • 区域是由当前 Teams 区域驱动的

有关详细信息,请参阅:

应用页面 (正式发布)

我们经常收到要求在 SPFx 中建立单页应用程序框架的请求。 我们希望 “应用页面”能够满足围绕 SPA 的大部分目标,同时提供类似的开发模式和用户体验。 应用程序页面是一种新的 SharePoint 现代页面布局,它在整个页面上托管单个 web 部件; 保持外观和感觉 (导航、标题、主题等) 的一致性。 将 SharePointFullPage 添加到 Web 部件清单的 supportedHosts 属性会在创建新页面时添加具有 Web 部件选项的“应用页”。

可以配置 Web 部件 (除非 canUpdateConfiguration 属性为 false),但无法修改页面布局/内容。 终端用户创建应用页面应该在本月稍晚些时候推出的新页面创建体验。 同时,静态页面 (位于_layouts/15/appPageHost.aspx?componentId=yourComponentGuidHere) 可以承载应用页面中的任何组件。 该页面现已推出,应该在发布时间或一两天后可用,这取决于租户。

有关详细信息,请参阅:

域隔离 Web 部件 (正式版)

在当前页面内运行的 SPFx 组件是简单而快速的。 然而,在某些情况下,人们希望有更高级别的隔离。 域隔离的 Web 部件在一个独立域的 iframe 中运行,它可以拥有与主机页面不同的权限。 例如,这允许 Web 部件访问当前用户的电子邮件,而无需为在租户中运行的所有代码提供相同的访问级别。

域及其 AAD 应用是为租户创建和管理的 - 租户管理员需要批准解决方案所要求的权限。 对于终端用户来说,Web 部件的外观和行为与其他 Web 部件一样。 目前,域隔离 Web 部件仅支持页面上下文中的动态数据。 将来的更新中将进行完整的部分到部分通信。

有关详细信息,请参阅:

库组件 (开发人员预览版)

现在可以创建其他 SPFx 组件可以引用的库。 它们的使用有点困难,所以我们将发布一份单独的文件,以便更详细地描述它们。 诀窍在于,需要将库发布到一个 npm 源 (内部的也行) 以使用它。

有关详细信息,请参阅:

支持 TypeScript 2.7、2.9 和 3.x (正式版)

在此版本中,我们已完成将 TypeScript 版本与所使用的 SPFx 版本分开的工作。 现在可以指定要与生成系统本身分开使用的 TypeScript 版本。 可以使用此处列出的任何编译器: https://www.npmjs.com/search?q=%40microsoft%2Frush-stack-compiler

注意

所用的编译器需要反映在 tsconfig.json 文件中,并引用与包含的 rush-stack-compiler 版本相匹配的 "extends": "./node_modules/@microsoft/rush-stack-compiler-2.7/includes/tsconfig-web.json"

我们在最后一刻注意到,某些最新版本的 @microsoft/rush-stack-compiler 包无法正常工作。 如果发现 npm 安装提供了有关 TypeScript 的对等依赖项的警告,并且生成失败并抱怨找不到编译器,请使用早期版本的包。

以下版本的 @microsoft/rush-stack-compiler 应与相应的 TypeScript 版本一起使用。

  • TypeScript v2.7
    • @microsoft/rush-stack-compiler-2.7@0.5.7
  • TypeScript v2.9
    • @microsoft/rush-stack-compiler-2.9@0.6.8
  • TypeScript v3.0
    • @microsoft/rush-stack-compiler-3.0@0.5.9
  • TypeScript v3.3
    • @microsoft/rush-stack-compiler-3.3@0.1.6

SharePoint 新式页面中的 Web 部件变体主题

SharePoint 新式页面最近发布了一项功能,其中包含分区背景色。 Web 部件可以更新其主题,以反映 Web 部件呈现的背景色。 将 Web 部件清单中的 supportsThemeVariants 属性设置为 true 将禁用始终呈现白色背景的默认行为。

然后,Web 部件可以使用 SPFx ThemeProvider 来获得背景色更改的通知。

有关详细信息,请参阅:

本版本中的更改

删除了 @microsoft/sp-webpart-base 中的 PropertyPane 代码

我们将属性窗格代码移动到另一个包 (@microsoft/sp-property-pane) ,其中包含以前存在于 @microsoft/sp-webpart-base 中的所有属性窗格逻辑。 当前运行的解决方案将继续有效, (我们将相应地转发调用) ,但 @microsoft/sp-webpart-base 上的公共属性窗格 API 在 SPFx v1.8 中已弃用,并将在 SPFx v1.9 版本中删除。

代码更改仅需更改导入的包。 它们具有完全相同的类型和签名; 它们位于不同的包中。 这允许我们仅在需要时加载属性面板的代码 (以及其所有的依赖包)。

此版本中已弃用和已删除项目

旧版 Fabric CSS 消耗

自 SPFx v1.0 发布以来,我们已向页面添加了大量 Fabric CSS。 尽管此后我们更改了 Fabric CSS 的工作方式,但我们继续将旧版本的 Fabric CSS 添加到页面中。 这导致增加了大量不需要的 CSS。 从 SPFx 1.8.0 开始,解决方案将不再加载旧的 Fabric CSS。

如果解决方案仍需要 1.8.0 前的行为,请将 ”loadLegacyFabricCss”: true 添加到组件清单中。

如果在升级到 1.8.0 后样式无法正常工作,则可能需要切换此设置。

相反,解决方案可以像这样导入 Fabric.css 样式表:

import 'office-ui-fabric-react/dist/css/fabric.css';

已知问题和限制

创建应用程序页面的新终端用户体验取决于现代页面中新 添加页面 体验。 此功能现已推出,但租户中的发布可能会晚几天。

如 TypeScript 支持部分所述,我们使用的 @microsoft/rush-stack-compiler 的一些较新版本存在问题。 早期版本可以使用。 当该问题得到解决时,我们将发布更新和通知。

用于在 SharePoint Online 中托管 Microsoft Teams 解决方案的最新供应商托管模式 (使用 Teams SDK) 仍处于预览阶段。

对独立域部件的动态数据支持仅限于页面上下文数据源。 未来更新将提供对跨 iFrame 边界动态数据的完全支持。