SharePoint Framework 構建你的第一個web部件(二)
部落格地址:http://blog.csdn.net/FoxDave
本篇接上一講,介紹一下web部件專案中的程式碼。
下面首先列舉一下專案中的一些關鍵檔案。
Web部件類
HelloWorldWebPart.ts定義了web部件的主要入口。Web部件類HelloWorldWebPart繼承了BaseClientSideWebPart類。任何一個客戶端web部件都應該繼承它來被定義為有效的web部件。建構函式如下所示:
public constructor(context: IWebPartContext) {
super(context);
}
BaseClientSideWebPart實現了構建一個web部件的最小功能。這個類也提供了許多引數來驗證和訪問只讀屬性如displayMode,web部件屬性,web部件上下文,web部件instanceId和web部件domElement等。
注意web部件類是被定義來接收IHelloWorldWebPartProps這個屬性型別的。
該屬性型別作為一個介面被單獨定義在IHelloWorldWebPartProps.ts檔案中。
這個屬性定義是用來為你的web部件定義自定義屬性型別的,之後會在web部件屬性皮膚進行詳細介紹。
Web部件渲染方法
Render方法中提供了web部件應該渲染到的DOM元素的位置。該方法用來將web部件渲染到DOM元素。在HelloWorldweb部件中,DOM元素被設定為了一個DIV元素。方法引數包含了顯示模式(Read或Edit)和web部件的配置屬性(如果有的話),方法宣告可以看上面的一張圖,除了一個收尾的大括號基本上都在裡面了。
這個模型很靈活,web部件可以在任意的JavaScript框架中構建然後載入到DOM元素中。下面是如何載入React元件來代替HTML文字的例子:
render(): void {
let e = React.createElement(TodoComponent, this.properties);
ReactDom.render(e, this.domElement);
}
注意:Yeoman SharePoint生成器允許你在向專案中新增新web部件時選擇React作為框架。
配置web部件屬性皮膚
屬性皮膚同樣定義在HelloWorldWebPart類中,propertyPaneSettings這個屬性是用來定義屬性皮膚的。
當屬性被定義完之後,你可以通過使用this.properties.<property-value>來訪問他們,就像在render方法中那樣呼叫:
<p class="ms-font-l ms-fontColor-white">${this.properties.description}</p>
閱讀Integrating property pane with a web part這篇文章來了解更多關於屬性皮膚和屬性皮膚欄位型別資訊,在之後的文章中我也會進行介紹。
替用下面的程式碼替換propertyPaneSettings方法,這段程式碼展示瞭如何新增文字型別之外的型別。
protected get propertyPaneSettings(): IPropertyPaneSettings {
return {
pages: [
{
header: {
description: strings.PropertyPaneDescription
},
groups: [
{
groupName: strings.BasicGroupName,
groupFields: [
PropertyPaneTextField('description', {
label: 'Description'
}),
PropertyPaneTextField('test', {
label: 'Multi-line Text Field',
multiline: true
}),
PropertyPaneCheckbox('test1', {
text: 'Checkbox'
}),
PropertyPaneDropdown('test2', {
label: 'Dropdown',
options: [
{ key: '1', text: 'One' },
{ key: '2', text: 'Two' },
{ key: '3', text: 'Three' },
{ key: '4', text: 'Four' }
]}),
PropertyPaneToggle('test3', {
label: 'Toggle',
onText: 'On',
offText: 'Off'
})
]
}
]
}
]
};
}
替換完之後會提示一些錯誤,因為我們增加了新的屬性欄位,需要從框架中匯入。定位到web部件程式碼類的頂部,將下面的內容新增到import部分的from '@microsoft/sp-client-preview'中:
PropertyPaneCheckbox,
PropertyPaneDropdown,
PropertyPaneToggle
完整的import部分的程式碼如下所示:
import {
BaseClientSideWebPart,
IPropertyPaneSettings,
IWebPartContext,
PropertyPaneTextField,
PropertyPaneCheckbox,
PropertyPaneDropdown,
PropertyPaneToggle
} from '@microsoft/sp-client-preview';
格式化(快捷鍵為Alt+Shift+F)並儲存檔案。接下來將這些屬性新增到IHelloWorldWebPartProps介面中來對映我們剛才新增的欄位。
開啟IHelloWorldWebPartProps.ts檔案,將程式碼替換為下面的內容:
export interface IHelloWorldWebPartProps {
description: string;
test: string;
test1: boolean;
test2: string;
test3: boolean;
}
儲存檔案,切換回HelloWorldWebPart.ts檔案。
新增完web部件屬性之後,就可以像之前呼叫description屬性那樣的方式進行呼叫了,如:
<p class="ms-font-l ms-fontColor-white">${this.properties.test2}</p>
如果要設定屬性的預設值,你需要更新web部件清單的屬性包,開啟檔案HelloWorldWebPart.manifest.json,將屬性部分(properties)修改為下面的樣子:
"properties": {
"description": "HelloWorld",
"test": "Multi-line text field",
"test1": true,
"test2": "2",
"test3": true
}
Web部件清單
HelloWorldWebPart.manifest.json檔案定義了web部件後設資料如版本、id、顯示名、圖示和描述。每個web部件都應該包含這個清單。
到這裡,程式碼的自定義部分都全部做完了,下一講我們將看一下定義之後的效果。
相關文章
- Jib構建你的第一個java映象Java
- 深入淺出Spring Web MVC:從零開始構建你的第一個Web應用SpringWebMVC
- 構建你的第一個Vue.js元件Vue.js元件
- 從零到一:用Go語言構建你的第一個Web服務GoWeb
- 構建你的第一個Flutter視訊通話應用Flutter
- Sharepoint 2013內容查詢Web部件自定義顯示樣式(實戰)Web
- Spring Boot——初體驗開啟第一個Gradle構建的Web專案Spring BootGradleWeb
- Vue.js - 構建你的第一個包並在NPM上釋出Vue.jsNPM
- 如何構建一個WEB同構應用Web
- 1. 構建您的第一個應用
- 使用 Web3 和 Vue.js 來建立你的第一個以太坊 dAPP(二)WebVue.jsAPP
- Web 開發學習筆記(1) — 搭建你的第一個 Web ServerWeb筆記Server
- 用 GIN 構建一個 WEB 服務Web
- 一起寫個 WSGI Web FrameworkWebFramework
- Docker入門-構建第一個Java程式DockerJava
- 搭建你的第一個區塊鏈網路(二)區塊鏈
- “Hello,Jetpack”:構建您的第一個Jetpack應用程式Jetpack
- 構建第一個基於 Gradle 的 Spring Boot 專案GradleSpring Boot
- Build On 活動預告 | 構建你的第一個基於知識圖譜的推薦模型UI模型
- 從零開始構建自己的第一個vue專案Vue
- SharePoint程式碼建表(實戰)
- Flutter 6 個建議改善你的程式碼結構Flutter
- CloudBase Framework丨第一個 Deno 部署工具是如何打造的?CloudFramework
- 快速入門:構建您的第一個 .NET Aspire 應用程式
- lit Web元件:構建快速、輕量級的 Web 元件Web元件
- 構建dubbo分散式平臺-maven構建ant-framework框架的pom.xml檔案配置分散式MavenFramework框架XML
- 我的第一個python web開發框架(33)——介面程式碼重構PythonWeb框架
- 手把手教你用Python構建你的第一個多標籤影象分類模型(附案例)Python模型
- FISCO BCOS | 構建第一個區塊鏈應用程式區塊鏈
- 你的第一個Django程式Django
- 你的第一個SpringMVC程式SpringMVCC程式
- 你的第一個Solana SPL
- 全棧工程師如何快速構建一個Web應用全棧工程師Web
- 如何構建一個多人(.io) Web 遊戲,第 1 部分Web遊戲
- 如何構建一個多人(.io) Web 遊戲,第 2 部分Web遊戲
- 構建dubbo分散式平臺-maven構建ant-framework核心程式碼Base封裝分散式MavenFramework封裝
- 001:第一章的構建之法
- 轉載:SpringBoot非官方教程 | 第一篇:構建第一個SpringBoot工程Spring Boot
- 第二章的構建之法