SharePoint Framework 在web部件中使用第三方样式 - 从外部URL引用第三方样式

简介:

博客地址:http://blog.csdn.net/FoxDave
本篇讲述如何在web部件中从外部URL引用第三方样式库。
在SPFx项目中引用第三方库的另一种方式就是从URL引用它们,如CDN或私有管理路径。这种方式最大的好处是我们将从公共位置加载常用的库,有可能客户端的用户已经将该库下载到了本地电脑中。这种情况下SPFx将会重用缓存中的库,使你的web部件加载得更快。
即便你不能使用公共CDN来加载库,从提高性能的角度看也是一次很好的实践。指向URL可以使用户只下载一次脚本,之后在整个网站进行缓存重用,显著提升了加载页面的速度和用户体验。
在从公共URL加载第三方库时,要注意使用上的风险。因为承载它们的地址不是由你进行管理的,所以不能确保它们的内容绝对安全。SPFx加载的脚本在当前用户的上下文运行,具有当前用户的权限。并且,如果承载脚本的地址不能访问了,你的web部件就无法工作了。
安装库的类型
当你从URL引用第三方库时,你不需要将他们以包的形式在你的项目中进行安装。但是如果你想要在开发过程中进行类型安全检查,你需要安装它们的TypeScript类型。
假设你创建了一个空项目,用命令npm install @types/jquery --save(注意是两个短横线)安装TypeScript的jQuery类型。
指定库的URL
从一个URL加载第三方库,你需要在项目的配置文件中指定该库URL的地址。打开文件./config/config.json,在externals部分添加jQuery相关的代码,添加完的代码所示:

{
  //...
  "externals": {
    //...
    "jquery": "https://code.jquery.com/jquery-3.1.1.min.js",
    "jquery-ui": "https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"
    //...
  }
  //...
}

在web部件中从URL引用库
在SPFx项目中指定了加载jQuery和jQuery UI的URL后,下一步是在项目中进行引用,打开文件./src/webparts/jQueryAccordion/JQueryAccordionWebPart.ts,在文件的顶部import声明的下面,添加如下代码:

import * as $ from 'jquery';
require('jquery-ui');

在打包时,它们会被标记为外部资源,因此不会包含在包中。运行命令gulp serve来启动项目。在弹出的工作台页面中,添加web部件到画板中,打开浏览器的debug tool并转到network标签页,刷新页面。我们可以看到jQuery加载的地址:
1

细心的你会发现,上图的折叠样式没有显示出来,从请求查看器中我们可以看到只加载了jQuery UI的脚本,但是并没有加载CSS样式。
在web部件中引用第三方CSS样式表
前面提到的config.json文件只支持添加外部的脚本文件,从外部引用样式文件跟它不同,我们需要使用SPComponentLoader。
使用SPComponentLoader从URL加载样式
打开文件./src/webparts/jQueryAccordion/JQueryAccordionWebPart.ts,在顶部import声明的下面,添加如下代码:

import { SPComponentLoader } from '@microsoft/sp-loader';

然后重写onInit()方法:

export default class JQueryAccordionWebPart extends BaseClientSideWebPart<IJQueryAccordionWebPartProps> {
  protected onInit(): Promise<void> {
    SPComponentLoader.loadCss('https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.min.css');
    return super.onInit();
  }

  // ...
}

在web部件在页面实例化之后,它会从指定的URL加载jQuery UI的CSS。
再次查看页面,可以看到样式出来了。
2

分析web部件包的内容
在编译完项目之后,在浏览器中打开文件./temp/stats/js-thirdpartycss.stats.html,可以看到包明显小了很多,变成了7KB(之前是300KB),并且jQuery和jQuery UI并不在图表中显示了,因为它们是在web部件运行时加载了。

相关文章
|
4月前
|
存储 消息中间件 前端开发
Web2py框架下的神秘力量:如何轻松集成第三方API,让你的应用不再孤单!
【8月更文挑战第31天】在开发现代Web应用时,常需集成第三方服务如支付网关、数据存储等。本文将指导你使用Web2py框架无缝接入第三方API。通过实例演示从注册获取API密钥、创建控制器、发送HTTP请求到处理响应的全过程。利用`requests`库与Web2py的内置功能,轻松实现API交互。文章详细介绍了如何编写RESTful控制器,处理API请求及响应,确保数据安全传输。通过本教程,你将学会如何高效整合第三方服务,拓展应用功能。欢迎留言交流心得与建议。
57 1
|
4月前
|
前端开发 Python 容器
Python+Dash快速web应用开发:静态部件篇(下)
Python+Dash快速web应用开发:静态部件篇(下)
|
4月前
|
JavaScript 安全
SharePoint Online 部署SPFx Web部件
【8月更文挑战第10天】在SharePoint Online中部署SPFx Web部件需先安装Node.js及Yeoman等工具,通过Yo生成器创建项目。开发Web部件后,使用`gulp`命令构建、打包并生成.sppkg文件。接着,在SharePoint管理中心的应用程序目录上传并部署该解决方案包至目标网站。最后,通过编辑页面插入Web部件进行测试,确保遵循最佳实践并维护更新。
|
5月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
5月前
|
API 网络架构 C++
SharePoint Online SPFx Web部件绑定数据
【7月更文挑战第6天】在Markdown格式下,以下是关于创建SharePoint Online SPFx Web部件绑定数据步骤的摘要: 1. 创建数据列表。 2. 使用VS Code打开Web部件。 3. 定义列表模型(如`IList`和`IListItem`接口)。 4. 引入`spHttpClient`以执行REST API请求。 5. 实现`_getListData()`方法,调用REST服务获取列表数据。 6. 设计`_renderList()`方法来渲染数据。 7. 在`render()`方法中获取并渲染数据到Web部件。
|
7月前
|
JSON API 网络架构
Python Web 开发: 解释 Django REST framework 的作用,以及如何定义序列化器(Serializer)?
Python Web 开发: 解释 Django REST framework 的作用,以及如何定义序列化器(Serializer)?
87 0
|
Java 应用服务中间件 容器
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web(下)
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web(下)
|
Java 数据库连接 数据库
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web(上)
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web
Spring 全家桶之 Spring Framework 5.3(八)- Spring 整合 Java Web(上)
|
3月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
61 0
|
4月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写