1. 程式人生 > >SharePoint Framework 向web部件中新增外部庫

SharePoint Framework 向web部件中新增外部庫

在進行開發的時候,你很可能會想要引用一些公開的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('[email protected]');
在多個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部件新增外部

在進行開發的時候,你很可能會想要引用一些公開的JavaScript庫到你的專案中,本文將會介紹如何打包和共享這些庫。打包指令碼預設情況下,web部件包會自動包含專案所依賴的庫。這意味著庫會隨著你的web部件一起被部署。這對於非公用的規模較小的庫來說是比較有益的。例子將字串驗證

maven web專案新增spring mvc依賴的jar包

使用maven進行專案管理的優勢之一就是maven可以幫我們管理專案建設中所使用的jar包,我們只需要在maven專案下的pox.xml中向dependencies下新增所需要的jar包資訊(包括groupId、artifactid、version)即可,這

ASP.Net Web.config引用外部config文件

pset lin AD 配置 utf tostring pan OS add Web.config file: <?xml version="1.0" encoding="utf-8"?><configuration><appSettings

『PHP學習筆記』系列八:MySQL資料庫新增資料

資料表結構: 資料表原有資料: 向MySQL資料庫寫入資料:  INSERT INTO 語句通常用於向 MySQL 表新增新的記錄: INSERT INTO table_name (column1, column2, column3,...) VALUES

班級集合新增學生資訊

實現效果:      知識運用:    System.Collections名稱空間下的ArrayList集合類的Add()方法    使用了 DataGridView 控制元件 實現程式碼: private void Form1_Load(object

如何在web專案新增redis快取

redis 是什麼?這個應該是你做一下工作的前提,不明白的可以百科一下。如果你大概明白了redis的工作原理。那麼請繼續往下看: 一。首先你需要明白,為什麼要在你的專案中使用redis快取? 現在很多應用程式要儲存結構簡單更新頻繁的資料,在我看來,字典表裡的資料就是儲存結構簡單且更新頻繁的資料,因

在.net core web網站新增webSocket支援

注意:前置條件,作業系統 windows 8 以上,IIS Express 8.0 以上.   第1步:在Startup.cs檔案的頭部新增如下引用: using System.Net.WebSockets; using System.Threading; using System.Thr

web專案新增圖示(unicode引用方式)

在web前端開發時,我們可能會為了美觀新增一些圖示,類似下圖這種: 先推薦一個很不錯的圖示素材庫阿里巴巴向量圖示庫 想到新增圖示我們首先想到是用<img>標籤,但這種方式使用起來不是很靈

可變陣列新增元素崩潰。。。

.h 屬性: @property (copy,nonatomic) NSMutableArray *thingArrayIssue; @property (copy,nonatomic) NSMutableArray *siteArrayIssue; @property (

web專案新增定時器

在JAVA專案中常常需要程式定時自動執行一些操作,比如快取中資料的更新等等,那麼這個時候就需要用到定時器去定時執行任務。 廢話不說了,直接上專案吧。 首先建立一個監聽器,在監聽器中加入Util包中的定時任務 package Listener; import java.uti

sharepoint 2010 如何在列表新增功能選單操作項

在做知識庫文件管理模組中,有一個需求,就是想要在自定義列表當中,增加一個,我的收藏功能。按照sharepoint預設的列表來做,我們可以在列表的標題欄位中,增加一個功能選單項,叫我的收藏.如下圖。 點選收藏,彈出一個提示框,點選確定,我們把這個紀錄新增到收藏記錄表。 1

config.xml新增一個配置項

1. 在config.xml中新增一項(路徑:frameworks/base/core/res/res/values/) 如: <bool name="config_myValue">true</bool> 2. 在 frameworks/base/

原有表新增不為空列(oracle為例)

在學習工作中,我們會遇到向一些已經使用過程中的表中新增新欄位,而且不允許為空。 這裡以某個表為例: alter table sys_org add (Is_bottom_gain  char(1)  null) ; alter table sys_org add (Is_b

SQL Server 資料庫表新增主鍵列

        SQL Server 資料庫,向已設定主鍵的資料庫表中插入新一列,並設為主鍵。         首先從基礎知識開始看,         建表: create table 表名

ROS導航-cost-map新增超聲波障礙圖層

兩種思路: 1.將超聲波反饋資訊作為一個新的layer新增到cost-map當中; 2.將超聲波資料(ros_msgs/Range)轉換為move_base包需要的輸入格式(LaserScan或者P

[面試] C++ STL(一)—— 一個vector新增N個元素,平均的新增的效能是?

考慮如下的程式碼輸出: int N = 100; vector<int> v; set<int> s; for (int i = 0; i < N; ++i) { s.insert(v.capacity());

activiti學習--13:組任務分配方式1直接方式+查詢正在執行的任務辦理人表+查詢歷史任務的辦理人表+拾取任務+將個人任務回退到組任務+組任務新增/刪除成員

組任務及三種分配方式: 1:在taskProcess.bpmn中直接寫 candidate-users=“a,b,c,d” 2:在taskProcess.bpmn中寫 candidate-users =“#{userIDs}”,變數的值要是S

Intellij IDEA在maven專案新增外部Jar包執行

一. 問題概述 我們知道Intellij IDEA是非常好用的Java語言開發的整合環境。提供了非常多實用的功能,包括了智慧程式碼助手、程式碼自動提示、程式碼重構、各種外掛等,當然也集成了maven 正常情況下,我們建立maven專案時,相關的jar包會自動匯入,當然我們也可以通過IDEA右側的maven工具

在VS新增lib的三種方法

在VS中新增lib庫的三種方法 注意: 1、每種方法也要複製相應的DLL檔案到相應目錄,或者設定DLL目錄的位置,具體方法為:"Properties" -> "Configuration Properties" -> "Deb

QT新增外部FFmpeg

關於QT新增外部庫這,我新增的是關於FFmpeg的庫。結果出現了問題特此寫下這篇日誌。 1.首先點選你的工程檔名->然後右鍵->選擇新增庫。 2.然後會彈出來一個如下圖的選擇視窗,因為FFmpeg是外部庫所以這裡選擇外部庫下一步。 3.然後會出現