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

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

博客地址: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了:

本篇就介绍到这里。

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
2月前
|
移动开发 JavaScript 数据可视化
|
3月前
|
前端开发 Python 容器
Python+Dash快速web应用开发:静态部件篇(下)
Python+Dash快速web应用开发:静态部件篇(下)
|
3月前
|
开发者 UED
Axure“Web高端交互元件库”:产品与设计的得力助手
这套“Web高端交互元件库”精心构建了四大板块内容,分别是登陆首页集合、Web框架集合、表单元件集合以及主流后台组件。每一板块都包含了大量实用且美观的交互元件,设计师与开发者可以根据具体项目需求,快速找到并应用这些元件,从而大大提升工作效率。
|
3月前
|
JavaScript 安全
SharePoint Online 部署SPFx Web部件
【8月更文挑战第10天】在SharePoint Online中部署SPFx Web部件需先安装Node.js及Yeoman等工具,通过Yo生成器创建项目。开发Web部件后,使用`gulp`命令构建、打包并生成.sppkg文件。接着,在SharePoint管理中心的应用程序目录上传并部署该解决方案包至目标网站。最后,通过编辑页面插入Web部件进行测试,确保遵循最佳实践并维护更新。
|
3月前
|
开发者 搜索推荐 Java
超越传统:JSF自定义标签库如何成为现代Web开发的个性化引擎
【8月更文挑战第31天】JavaServer Faces(JSF)框架支持通过自定义标签库扩展其内置组件,以满足特定业务需求。这涉及创建`.taglib`文件定义标签库及组件,并实现对应的Java类与渲染器。本文介绍如何构建和应用JSF自定义标签库,包括定义标签库、实现标签类与渲染器逻辑,以及在JSF页面中使用这些自定义标签,从而提升代码复用性和可维护性,助力开发更复杂且个性化的Web应用。
69 0
|
4月前
|
开发框架 搜索推荐 前端开发
【.NET全栈】ASP.NET开发Web应用——Web部件技术
【.NET全栈】ASP.NET开发Web应用——Web部件技术
|
4月前
|
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部件。
|
3月前
|
数据可视化 数据挖掘 持续交付
Axure Web端元件库:从Quick UI到500+组件的飞跃
在快速变化的数字世界中,产品设计不仅仅是功能的堆砌,更是用户体验的精心雕琢。原型设计作为产品开发过程中的关键环节,其重要性不言而喻。Axure,作为业界领先的原型设计工具,凭借其强大的交互设计和丰富的功能,赢得了全球设计师和开发者的信赖。而Axure Web端元件库,则是这一平台上的一颗璀璨明珠,它以超过500个精心设计的组件为基础,为设计师们打开了一扇通往高效、高质量原型设计的大门。
132 0
|
25天前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
86 3
|
6天前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
79 44