使用 SharePoint Server 2016 功能包 2 进行 SharePoint 框架开发

SharePoint Server 2016 功能包 2 支持在经典 SharePoint 页面中托管的 SharePoint 框架客户端 Web 部件。

Microsoft 365 平台社区 (PnP) YouTube 频道上的以下视频还介绍了使用功能包 2 在 SharePoint Server 2016 中进行 SharePoint 框架开发。

使用 SharePoint 框架的哪个版本

由于 SharePoint Online 和 SharePoint Server 2016 针对新功能具有不同的发布周期,因此就 SharePoint 框架而言,它们也具有不同的功能。 SharePoint Online 始终使用最新版本的 SharePoint 框架,但 SharePoint Server 2016 仅支持与已部署程序包的服务器端依赖项相匹配的版本。

SharePoint Server 2016 功能包 2 使用 SharePoint 框架 v1.1.0 支持在经典 SharePoint 页面上托管的 SharePoint 框架客户端 Web 部件。 这意味着,当面向 SharePoint Server 2016 平台时,由于服务器端版本依赖项,将需要使用 SharePoint 框架 v1.1.0。

如果计划在 SharePoint Server 2016 和 SharePoint Online 中使用相同的客户端 Web 部件,需要使用 SharePoint 框架 v1.1.0 作为基线版本,以确保 Web 部件在两种环境中都能正常运行。

从版本 1.3 开始,SharePoint 框架 Yeoman 生成器支持使用 SharePoint 框架最新版本(旨在与 SharePoint Online 一起使用)的基架搭建解决方案,以及可用于 SharePoint 本地环境的解决方案(基于 SharePoint 框架 v1.1.0)。 无需安装独立版本的 SharePoint 框架 Yeoman 生成器,即可构建旨在用于本地 SharePoint 的解决方案。

重要

自版本 1.4 开始,SharePoint 框架 Yeoman 生成器支持新属性 includeClientSideAssets,此属性可用于指明应在 sppkg 包中添加哪些资产。 但 SharePoint Server 2016 不支持此功能。 如果解决方案面向 SharePoint 2016,应将 ./config/package-solution.json 中的此属性更新为 false

托管解决方案以供本地部署

将 SharePoint 框架客户端 Web 部件部署到本地需要两个不同的操作:

  • 将解决方案包部署到 SharePoint 应用程序目录。
  • 将 JavaScript 文件托管在集中位置

可以将 JavaScript 文件托管在最适合你环境的位置。 例如,这些文件可以托管在以下任一位置:

  • Azure CDN: 与 SharePoint Online 安装类似。 要求最终用户具备 Internet 连接。
  • 网络中的本地服务器: 托管公司网络的 JavaScript 文件的服务器。 只要文件可以通过 HTTP 请求访问,就可以使用任何所需的技术。
  • SharePoint Server 2016: 还可以将文件托管在本地 SharePoint 服务器场自身中。 例如,可以在服务器场中定义一个托管所有 SharePoint 框架资产的标准化站点。 但请注意,默认情况下,系统不允许将 .json 文件上传到 SharePoint Server 2016 库,因此,必须针对此选项调整服务器场级别设置。

有关 SharePoint Server 2016 中阻止的文件类型的更多详细信息,请参阅以下支持文章:无法添加到列表或库的文件类型

开发环境考虑事项

在开发 SharePoint 框架客户端 Web 部件时,需要 Internet 连接才能访问 npm 包。 使用 SharePoint 框架 Yeoman 模板为解决方案搭建基架时,这是必要条件。

如果开发计算机无法访问 Internet,可以为所需的 npm 包设置本地内部部署注册表。 然而,这需要额外的软件和大量的工作来设置和维护本地程序包版本与实际 npm 库中的程序包。

Team-based development on the SharePoint Framework(基于团队的 SharePoint 框架开发)指导文档包括开发环境设置适用的不同选项,包括何时需要支持多个 SharePoint 框架版本。

Node.js,Gulp & Yeoman 版本

SPFx v1.1 框架、工具和关联版本的依赖项与最新版本 SPFx 的依赖项矩阵不匹配。 在这些情况下,你可能需要安装特定版本的工具。

例如,Gulp v3.* 最高只支持 Node.js v10,而 Node.js v12 及更高版本则支持 Gulp v4.*。 由于 SPFx v1.1 仅在 Node.js v6 和 Node.js v8 上受支持,因此需要确保已安装较旧版本的 Node.js 以及较旧版本的 Gulp & Yeoman。

注意

Gulp 团队开发了一个单独的包:gulp-cli,应全局安装此包。 它可由使用任一 Gulp v3 & Gulp v4 的项目使用。

在此处详细了解 gulp-cli:gulpjs/gulp/#2324

Microsoft 建议对支持创建本地项目的 SharePoint 框架 (@microsoft/generator-sharepoint) 使用最新版本的 Yeoman 生成器:SPFx v1.6.0。

重要

SharePoint 框架的 Yeoman 生成器(从 v1.13.0 开始)仅支持 SharePoint Online 项目。 有关此更改的详细信息,请参阅 SharePoint Framework v1.13 发行说明。 但是,SPFx 1.1.1 仅支持到 Node.js v6。 因此,需要获取适用于支持 SPFx v1.1.0 的相同版本 Node.js (v6) 的 SharePoint 框架 (v1.6.0) 的 Yeoman 生成器的最新版本。

  1. 安装 Node.js v6.17.1

  2. 安装全局依赖项

    npm install gulp-cli@2.3.0 --global
    npm install yo@2.0.0 --global
    npm install @microsoft/generator-sharepoint@1.6.0 --global
    

有关详细信息,请参阅 SharePoint 框架开发工具和库兼容性

确定解决方案使用的版本

如果现在具备 SharePoint 框架解决方案,并且想确认解决方案使用了哪个版本的 SharePoint 框架,则需要检查以下位置:

  • .yo-rc.json: 解决方案根文件夹中的文件,可存储创建解决方案时使用的 SharePoint 框架 Yeoman 模板版本。
  • package.json: 解决方案根文件夹中的文件,其中包含对解决方案中使用的程序包版本的引用。
  • npm-shrinkwrap.json: 解决方案根文件夹中的文件,其中包含有关所使用的确切版本的信息(适用于使用 npm shrinkwrap 命令来锁定解决方案确切版本的情况)。
  • package.json:如果你已为解决方案安装了程序包,则文件位于 node_modules/@microsoft/sp-webpart-base 文件夹中,其包含与使用的 SharePoint 框架版本匹配的 version 属性。

疑难解答

Node.js v6、Node.js v8、HTTP1、 & HTTP2 的影响

大约在 v1.1 发布时,Node.js 正从 Node.js v6.x 过渡到 v8.x。 在此更新中,Node.js 引入了默认 HTTP 协议从 HTTP1 切换为 HTTP2 的更改。 SPFx v1.1 是针对 HTTP1(而非 HTTP2)编写的,因此这项更改影响了 SPFx v1.1 项目的本地 Web 服务器。

在 Node.js v8.x 中,可以强制使用 HTTP1,方法是设置以下环境变量,以指示 Node.js 使用 HTTP1,而不是默认的 HTTP2:NODE_NO_HTTP2=1。 此环境变量仅存在于 Node.js v8.x 中。 这就是构建用于 SharePoint Server 2016 的 SPFx 解决方案时应使用 Node.js v8.x 的原因。

此问题不会影响更高版本的 SPFx,因为这些版本已进行更新以支持 HTTPs。

有关详细信息,请参阅问题 #1002

另请参阅