博客地址:http://blog.csdn.net/FoxDave

有许多第三方库可以帮助我们构建丰富的SharePoint Framework客户端web部件。并且这些JavaScript脚本常常包含一些资产如样式表。本文将介绍如何将第三方的CSS打包到你的Solution中。本示例将使用jQuery和jQuery UI来显示一个折叠样式。

Note: 在此之前你需要先配置一下SPFx客户端web部件的开发环境

准备项目

创建一个新的项目

首先打开命令行,在你喜欢的目录创建一个项目目录,如md js-thirdpartycss,然后通过cd命令进入到该目录。执行命令yo @microsoft/sharepoint来使用Yeoman generator来搭建一个新的SPFx项目。之前的文章里也有相关的具体描述,这里不再赘述了。

创建完项目之后,执行命令npm shrinkwrap来锁定项目当前依赖库的版本。然后用VS Code打开你的项目。

添加测试内容

打开文件./src/webparts/jQueryAccordion/JQueryAccordionWebPart.ts,将render方法修改为如下代码:

export default class JQueryAccordionWebPart extends BaseClientSideWebPart<IJQueryAccordionWebPartProps> {
// ...
public render(): void {
this.domElement.innerHTML = `
<div>
<div class="accordion">
<h3>Information</h3>
<div>
<p>
The Volcanoes, crags, and caves park is a scenic destination for
many visitors each year. To ensure everyone has a good
experience and to preserve the natural beauty, access is
restricted based on a permit system.
</p>
<p>
Activities include viewing active volcanoes, skiing on mountains,
walking across lava fields, and caving (spelunking) in caves
left behind by the lava.
</p>
</div>
<h3>Snow permit</h3>
<div>
<p>
The Northern region has snow in the mountains during winter.
Purchase a snow permit for access to approved ski areas.
</p>
</div>
<h3>Hiking permit</h3>
<div>
<p>
The entire region has hiking trails for your enjoyment.
Purchase a hiking permit for access to approved trails.
</p>
</div>
<h3>Volcano access</h3>
<div>
<p>
The volcanic region is beautiful but also dangerous. Each
area may have restrictions based on wind and volcanic
conditions. There are three type of permits based on activity.
</p>
<ul>
<li>Volcano drive car pass</li>
<li>Lava field access permit</li>
<li>Caving permit</li>
</ul>
</div>
</div>
</div>`; ($('.accordion', this.domElement) as any).accordion();
}
// ...
}

这时先不要编译项目,因为编译的时候你会得到一个错误提示$未定义,这是因为项目没有首先加载引用的jQuery。而将第三方库打到包中是最简单的方式,在包部署的时候会引用包中存在的第三方库。

执行下面的命令安装jQuery和jQuery UI:

npm install jquery jquery-ui --save

由于我们使用的是TypeScript进行开发,我们还需要TypeScript的jQuery类型,使用下面的命令执行安装:

npm install @types/jquery --save

在web部件中引用样式库

安装了库之后,下一步就是在项目中引用它们。打开文件./src/webparts/jQueryAccordion/JQueryAccordionWebPart.ts,在顶部最后一个import引用声明下面添加jQuery和jQuery UI的引用。

import * as $ from 'jquery';
require('../../../node_modules/jquery-ui/ui/widgets/accordion');

由于我们已经安装了TypeScript的jQuery类型包,我们可以使用import进行引入。jQuery UI这个包比较特殊,它跟其他的模块结构不太一样,并没有一个主入口来调用所有的组件,所有我们需要进行明确的直接引用。

接下来使用gulp serve命令编译项目,然后就可以通过工作台添加web部件看效果了。

现在的这个是缺少样式的,也就是说接下来我们要将样式添加到web部件中。

在web部件中引用第三方CSS样式

SPFx提供了从Webpack加载CSS的标准支持。打开文件./src/webparts/jQueryAccordion/JQueryAccordionWebPart.ts,在上面添加的代码之后继续添加下面的require声明。

require('../../../node_modules/jquery-ui/themes/base/core.css');
require('../../../node_modules/jquery-ui/themes/base/accordion.css');
require('../../../node_modules/jquery-ui/themes/base/theme.css');

非常简单,跟在页面上引用基本类似,只需要指明CSS的路径就可以了。在编译项目时,Webpack会将这些引用的文件放到web部件包中。再次执行gulp serve命令后查看效果。

分析生成的web部件包的内容

使用第三方库最简单的方式就是将它们包含到web部件包中。Webpack会自动解析所有的依赖项以确保所有的脚本以正确的顺序加载。这种方式的不足是所有的引用资源都会在每个web部件单独加载。如果我们的项目中有多个web部件都使用jQuery UI,每个web部件都会加载自己的jQuery UI副本,因此会减慢页面的加载速度。

来看看打到web部件包中对尺寸的影响,在打包完成之后在浏览器中打开文件./temp/stats/js-thirdpartycss.stats.html。在图表上移动鼠标你就会看到相应的信息,例如下图中的被web部件引用的jQuery UI CSS文件占据了6%的总大小。

图表下方的免责声明中提到,尺寸表示的是调试版本的包的大小。发布版本包会小很多。从图表中也能清晰地看到web部件包的各部分构成。

SharePoint Framework 在web部件中使用第三方样式 - 将第三方样式打到包中的更多相关文章

  1. SharePoint Framework 在web部件中使用已存在的JavaScript库 - JavaScript库的格式

    博客地址:http://blog.csdn.net/FoxDave JavaScript库格式 不同的JavaScript库的编译和打包方式各不相同.一些是以模块的方式打包的,而另一些是以纯脚本运行在 ...

  2. SharePoint Framework 在web部件中使用已存在的JavaScript库 - 捆绑打包和外部引用

    博客地址:http://blog.csdn.net/FoxDave 在构建SPFx客户端web部件时,你可以使用公网已有的JavaScript库来构建强大的解决方案.但是在使用的时候你需要考虑你引用的 ...

  3. SharePoint Framework 向web部件中添加外部库

    博客地址:http://blog.csdn.net/FoxDave 在进行开发的时候,你很可能会想要引用一些公开的JavaScript库到你的项目中,本文将会介绍如何打包和共享这些库. 打包脚本 默认 ...

  4. SharePoint Framework 在Visual Studio Code中调试你的托管解决方案

    博客地址:http://blog.csdn.net/FoxDave 上一篇介绍了如何在本地调试你的SharePoint Framework解决方案,本篇介绍如何调试你的SharePoint Onl ...

  5. SharePoint Framework 概述

    博客地址:http://blog.csdn.net/FoxDave 本文翻译自新出的SharePoint Framework概述介绍文章,原文地址:http://dev.office.com/sh ...

  6. Sharepoint 2013内容查询Web部件自定义显示样式(实战)

    分享人:广州华软 星尘 一. 前言 在进行Sharepoint开发时,经常会遇到内容展示个性化需求的问题,当然如果通过自定义开发控件对于内容展示的需求基本都可以很好的解决,但自定义开发也有不好的地方, ...

  7. SharePoint每日小贴士Web部件

    SharePoint每日小贴士Web部件 项目描写叙述         此Web部件从指定SP自己定义列表或一个选定的 RSS源选择一个随机项目.并显示一张图片.标题和一个Tip.         适 ...

  8. SharePoint Framework 配置Office 365开发者租户

    博客地址:http://blog.csdn.net/FoxDave 你需要一个Office 365开发者租户来使用预览版SharePoint Framework构建和发布客户端web部件.你的租户 ...

  9. SharePoint Framework:下一代开发方式

    SharePoint Framework(SPFx),是页面 和Webpart的模型,完全支持本地开发(即完全可以脱离SharPoint环境在本地进行开发),听起来是不是很高级呢,早期SharePoi ...

随机推荐

  1. 将python中的一个float变量转成内存的4个字节值

    #coding=utf- from struct import pack,unpack byte=pack('f',1.5) print(byte) print([i for i in byte]) ...

  2. MIUI6系统如何启用root权限的教程

    MIUI6系统有没有办法启用了root权限?大家都清楚,Android机器有root权限,如果手机启用了root相关权限,就能够实现更好的功能,举例子,大家单位的营销部门同事,使用某些营销软件都需要在 ...

  3. 第 10 章 容器监控 - 079 - 监控利器 sysdig

    sysdig 是一个轻量级的系统监控工具,同时它还原生支持容器. 通过 sysdig 我们可以近距离观察 linux 操作系统和容器的行为. Linux 上有很多常用的监控工具,比如 strace,t ...

  4. Springboot 中配置文件的优先级和加载顺序

    1. 若application.yml 和bootStrap.yml 在同一目录下,则bootStrap.yml 的加载顺序要高于application.yml,即bootStrap.yml  会优先 ...

  5. 怎么样获取小米手机4的ROOT超级权限

    小米手机4有何方法开通了Root超级权限?各位都清楚,Android手机有Root超级权限,一旦手机开通了root相关权限,能够实现更强大的功能,打比方各位部门的营销部门的妹纸,使用个别营销工具都需要 ...

  6. dynamics crm跳转到手机版本的页面

    https://community.dynamics.com/crm/f/117/t/210393 https://community.dynamics.com/crm/f/117/t/118414 ...

  7. DataSet结果转模型类

    引入命名空间: using System.Data; using System.Reflection; 类封装代码: public class ModelHelper { public T To< ...

  8. 简易OA漫谈之工作流设计(五,直接上级)

    规则引擎里比较复杂的问题就是:配置步骤的审批人. 某一个步骤由谁来审批,有很多复杂情况: 1.指定某一个具体的人.这种通常用于一些特殊的岗位,全公司只有一个,比如小公司里的财务,人事专员等. 2.指定 ...

  9. 【nowcoder】 4th T1 动态点分治

    题目链接:https://www.nowcoder.com/acm/contest/175/A 题目名字吓死人 std: 我 太可啪了 一道简单的模拟题.虽然我把题意想错了. 按照题意模拟输出和继承. ...

  10. 云计算概述和KVM虚拟化

    前言: 近些年一直听着 虚拟化.云计算.公有云.私有云.混合云这些个概念,一直想着....这些概念要用什么技术实现? 一.云计算的概念 1.传统IDC机房面都会临什么问题? 任何新事物都是由需求催生的 ...