SharePoint Framework 向web部件中添加外部库
博客地址:http://blog.csdn.net/FoxDave
在进行开发的时候,你很可能会想要引用一些公开的JavaScript库到你的项目中,本文将会介绍如何打包和共享这些库。
打包脚本
默认情况下,web部件包会自动包含项目所依赖的库。这意味着库会随着你的web部件一起被部署。这对于非公用的规模较小的库来说是比较有益的。
例子
将字符串验证库validator包加入到web部件。从npm下载validator包,输入命令:
npm install validator --save
注意:由于你在使用TypeScript,它是JavaScript的超集,所以在编译的时候它们仍然会转换成JavaScript,你可以通过npm命令搜索并找到类型:npm install @types/{package} --save
在web部件所在文件夹创建一个文件validator.d.ts然后添加如下代码:
declare module "validator" {
export function isEmail(email: string): boolean;
export function isAscii(text: string): boolean;
}
注意,一些库是没有类型的,我们假定本文示例中引用的Validator库是没有的(事实上它有),在这种情况下你需要为该库定义你自己的类型定义文件.d.ts,也就是上述代码。
在你的web部件文件中,引用该类型,用如下代码:
import * as validator from 'validator';
然后就可以在你的web部件代码中使用了,例如:
validator.isEmail('someone@example.com');
在多个web部件工程共享库
你的客户端解决方案可能会包含多个web部件。这些web部件可能需要引入或共享相同的库。在这种情况下,应该放弃捆绑库的方式,而是在一个单独的JavaScript文件中包含它来提高性能,尤其对于大型的库来说更是必要的。
例子
在本例中,让我们演示在一个单独的包中共享marked包(一个Markdown编译器)。首先下载marked包:npm install marked --save,然后下载类型:npm install @types/marked --save。
打开config/config.json文件进行编辑,向externals映射添加一条新内容。这将会告诉打包器将它放到一个单独的文件,以避免将它直接打到包中:
"marked": "node_modules/marked/marked.min.js"
在你的web部件中添加引入marked库的声明:
import * as marked from 'marked';
在你的web部件项目中使用该库:
console.log(marked('I am using __markdown__.'));
从CDN加载脚本
如果不通过npm包加载库,你还可以从CDN加载。这需要修改config.json文件以配置为从CDN URL去加载库。
例子
本例中我们演示从CDN加载jQuery。你不需要安装npm包,但是仍然需要安装类型。安装jQuery类型的命令如下:
npm install --save @types/jquery
更新config目录中的config.json文件来从CDN加载jQuery,在externals部分添加一条新项:
"jquery": "https://code.jquery.com/jquery-3.1.0.min.js"
在你的web部件中引入jQuery:
import * as $ from 'jquery';
在你的web部件中使用jQuery
alert( $('#foo').val() );
加载SharePoint JSOM
注意下面介绍的方式并不适用于传统的SharePoint页面,因为JSOM已经加载了。如果你需要让你的web部件能在传统和现代页面同时工作,你需要首先检查SharePoint JSOM是否可用并已经加载了。
安装JSOM依赖的Microsoft Ajax类型:
npm install @types/microsoft-ajax --save
安装JSOM的类型:
npm install @types/sharepoint --save
在config.json中添加以下内容:
{
"sp-init": {
"path": "https://CONTOSO.sharepoint.com/_layouts/15/init.js",
"globalName": "$_global_init"
},
"microsoft-ajax": {
"path": "https://CONTOSO.sharepoint.com/_layouts/15/MicrosoftAjax.js",
"globalName": "Sys",
"globalDependencies": [ "sp-init" ]
},
"sp-runtime": {
"path": "https://CONTOSO.sharepoint.com/_layouts/15/SP.Runtime.js",
"globalName": "SP",
"globalDependencies": [ "microsoft-ajax" ]
},
"sharepoint": {
"path": "https://CONTOSO.sharepoint.com/_layouts/15/SP.js",
"globalName": "SP",
"globalDependencies": [ "sp-runtime" ]
}
}
在你的web部件中添加require声明:
require('sp-init');
require('microsoft-ajax');
require('sp-runtime');
require('sharepoint');
加载国际化资源
在config.json文件中有一段映射叫做localizedResources,可以通过它定义如何加载国际化资源。在这部分设置的路径为到lib文件夹的相对路径,注意不要以/开头。
在本例中,我们有个名为src/strings/的文件夹,里面有几个JavaScript文件如en-us.js、fr-fr.js、de-de.js。由于每个文件都需要通过模块加载器加载,它们必须包含一个公用的JS包装器。例如在en-us.js文件中:
define([], function() {
return {
"PropertyPaneDescription": "Description",
"BasicGroupName": "Group Name",
"DescriptionFieldLabel": "Description Field"
}
});
编辑config.json文件,向localizedResources中添加一条。{locale}为资源文件名的占位符。
{
"strings": "strings/{locale}.js"
}
本例中假设你有一个叫做MyStrings.d.ts的文件,向其中添加关于你的设置的类型:
declare interface IStrings {
webpartTitle: string;
initialPrompt: string;
exitPrompt: string;
}
declare module 'mystrings' {
const strings: IStrings;
export = strings;
}
接下来在项目中添加import声明:
import * as strings from 'mystrings';
这样就可以在项目中使用 strings了:
本篇就介绍到这里。
SharePoint Framework 向web部件中添加外部库的更多相关文章
- SharePoint Framework 在web部件中使用第三方样式 - 将第三方样式打到包中
博客地址:http://blog.csdn.net/FoxDave 有许多第三方库可以帮助我们构建丰富的SharePoint Framework客户端web部件.并且这些JavaScript脚本常常包 ...
- SharePoint Framework 在web部件中使用已存在的JavaScript库 - JavaScript库的格式
博客地址:http://blog.csdn.net/FoxDave JavaScript库格式 不同的JavaScript库的编译和打包方式各不相同.一些是以模块的方式打包的,而另一些是以纯脚本运行在 ...
- SharePoint Framework 在web部件中使用已存在的JavaScript库 - 捆绑打包和外部引用
博客地址:http://blog.csdn.net/FoxDave 在构建SPFx客户端web部件时,你可以使用公网已有的JavaScript库来构建强大的解决方案.但是在使用的时候你需要考虑你引用的 ...
- 向linux内核中添加外部中断驱动模块
本文主要介绍外部中断驱动模块的编写,包括:1.linux模块的框架及混杂设备的注册.卸载.操作函数集.2.中断的申请及释放.3.等待队列的使用.4.工作队列的使用.5.定时器的使用.6.向linux内 ...
- 如何在web项目中添加javamelody monitoring 监控。
1.在工程的maven pom中添加依赖javamelody-core <!-- monitoring监控 --><!-- https://mvnrepository.com/art ...
- web项目中添加logger日志
在项目中添加log4j.xml文件 log4j.xml文件 <?xml version="1.0" encoding="UTF-8" ?><! ...
- web项目中添加定时任务
1.在web.xml中添加servlet <servlet> <servlet-name>StatisticInitServlet</servlet-name> & ...
- [学习笔记] 在Eclipse中添加用户库 Add User Libraries ,在项目中引用用户库
如果还没有安装Eclipse, 则请参考前文: [学习笔记] 下载.安装.启动 Eclipse(OEPE) 添加用户库 本文主要介绍在项目中直接使用第三方库的情况.就是把第三方的jar文件直接放到某 ...
- iOS——Xcode中添加第三方库
一.只有.h和.a文件的库 1.向项目中添加三方库文件 如果添加的第三方库只有.h和.a文件,直接把文件夹拖进项目下面,这时会弹出下面的提示框,一定要勾选下面选择的选项: 这里要注意,在Add to ...
随机推荐
- hadoop配置项笔记 - hdfs
hadoop版本:3.1.1 core-site.xml dfs.namenode.rpc-address 作用:rpc地址.我在使用distcp时显式使用到了. 默认值:port是8020 我的设置 ...
- 环境准备—之—linux下安装python3和pip3
转自 上海悠悠 https://www.cnblogs.com/yoyoketang/p/10195102.html 前言 centos7 自带有 python,但是却是 python2 版本的 py ...
- [python]Python代码安全分析工具(Bandit)
简介: Bandit是一款Python源码分析框架,可用于Python代码的安全性分析.Bandit使用标准库中的ast模块,将Python源码解析成Python语法节点构成的树.Bandit允许用户 ...
- js对象跟数组多层嵌套,检测没有此数据就添加有则不添加以及超过限制条件删除操作
例如你需要这样格式的数据: [{"name":"合肥市","arrey":[{"lat":"31.862323 ...
- linux指令(2)
1)获取历史操作命令: "!<history指令编号>”即可运行相应命令 [root@server1 ~]# history.............. 1011 uname - ...
- python操作mysql——mysql.connector
连接mysql, 需要mysql connector, conntector是一种驱动程序,python连接mysql的驱动程序,mysql官方给出的名称为connector/python, 可参考m ...
- python 等频率切分数据
小编最近入坑风控,在工作中需要对数据进行等频率切分,也就是将数据划分成几段,在每段中,数据的出现频率,出现次数是大致相同的,让数据集在每段上呈现出分布均匀的趋势. 小编先是想到df.describe ...
- GET 和 POST 的区别 以及为什么 GET请求 比 POST请求 更快
引子: 和朋友的聊天中得知他公司后台接口全部都是 POST 请求, 我表示很纳闷为什么全是 POST 请求呢? GET 比 POST 安全,或者说 便于后台方便,后台不用区分包装类 (所以全部用 P ...
- python_vlc 播放http流
由于工作需要,项目功能测试用到python调用vlc,用于播放一些直播流,各种尝试后终于可以了,其实蛮简单的,就是由于没有参考自己折腾挺浪费时间的,所以把结果贴出来给需要用到的人. 准备工作: 1.首 ...
- spiflash
1.SPI Flash (即SPI Nor Flash)是Nor Flash的一种:2.NOR Flash根据数据传输的位数可以分为并行(Parallel)NOR Flash和串行(SPI)NOR F ...