使用Bootstrap美化SharePoint客户端Web部件

在开发SharePoint客户端Web部件时,经常需要让它们看起来更加美观。Bootstrap是一个流行的前端框架,可以帮助快速实现这一点。本文将介绍如何使用Bootstrap和React-Bootstrap来美化SharePoint客户端Web部件。

准备工作

在开始之前,需要确保已经安装了SPFx框架和相关的开发工具。SPFx(SharePointFramework)是微软提供的一个用于构建SharePoint客户端Web部件的框架。

引入Bootstrap

为了使用Bootstrap,需要从CDN动态加载Bootstrap的CSS文件。这属于代码的“基础设施”部分,因为实际的“执行”部分不应该关心CSS是如何可用的。

首先,在ThinkingWebPart.ts文件中添加以下代码:

import importableModuleLoader from '@microsoft/sp-module-loader';

这将给提供动态模块加载器,以便可以加载外部内容。

选择文件来源

有几种选择来加载文件:

  • 从当前SharePoint根站点,例如“站点资产”文件夹。这样做的好处是不需要跨过安全边界。但是,SharePoint需要一个服务器相对URL来获取这个路径,可以通过_spConfigInfo来派生这个路径。
  • 从SharePoint租户的根站点。这样做的好处是每个租户只有一个文件副本。但是,这样做的缺点是跨过了安全边界,并且需要给这个站点提供访问权限,这可能会让一个站点集合的成员看到另一个站点集合的成员。
  • 从外部位置,即内容分发网络(CDN)。这样做的好处是所有租户只有一个文件副本。但是,这样做的缺点是跨过了安全边界,并且租户之间是相互关联的。更好的一点是,浏览器可以缓存这个文件,所以在第一次页面加载之后,加载速度会更快。

虽然没有确切的答案,但为了演示目的,将使用CDN。在实践中,可能会使用CDN,但可能会考虑托管自己的私有CDN,以便可以控制上面的内容。

然后,在ThinkingWebPart.tsc文件中添加以下代码:

public constructor(context: IWebPartContext) { super(context); importableModuleLoader.loadCss('https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css'); }

然后使用以下命令编译:

gulp serve

这可能会失败,并显示以下错误消息:

Error – typescript – node_modules\@microsoft\sp-module-loader\lib\SPModuleLoader.d.ts(1, 28): error TS2307: Cannot find module ‘combokeys’. Error – typescript – node_modules\@microsoft\sp-module-loader\lib\importableSpModuleLoader.d.ts(1, 28): error TS2307: Cannot find module ‘combokeys’.

不用担心,这是一个因为没有安装正确的类型定义而产生的问题。

根据SPFx教程,只需要运行以下命令:

tsd install combokeys --save

这将给一个动态加载BootstrapCSS的运行中的Web部件

需要更多的功能,需要jQuery库来添加功能。然而,这并不一定是个好主意,因为jQuery和React有很多重叠,而且有一些好人已经实现了React中的Bootstrap。将使用这个。

首先,安装React-Bootstrap:

npm install react-bootstrap --save

现在,已经可以使用Bootstrap了,但仍然需要告诉项目关于它。

安装它的类型定义文件:

typings install dt~react-bootstrap –save –global

package.json文件中,确保以下内容是“dependencies”的一部分:

"react-bootstrap": "^0.30.3",

config/config.json文件中,确保以下内容是“externals”的一部分:

"react-bootstrap": "node_modules/react-bootstrap/dist/react-bootstrap.min.js"

现在可以对FilterableProductTable.ts文件进行所需的更改,以引用react-bootstrap组件。

这涉及到很多内容,所以建议从GitHub上拉取正确版本的代码。

git checkout tags/v1.1

要点:

  • React-Bootstrap和ES6并不是完全自然的匹配,需要使用.bind(this)而不是=>语法。
  • 需要使用受控组件,而不是在“Thinking inReact”中使用的非受控组件。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485