SharePoint Framework 在web部件中使用第三方樣式 - 將第三方樣式打到包中
部落格地址: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部件中使用第三方樣式 - 從外部URL引用第三方樣式FrameworkWeb
- 在 vue 中樣式不生效Vue
- Sharepoint 2013內容查詢Web部件自定義顯示樣式(實戰)Web
- vue如何修改第三方庫的css樣式,如element-ui的樣式,穿透樣式的寫法VueCSSUI穿透
- SharePoint Framework 向web部件中新增外部庫FrameworkWeb
- SharePoint Framework 在web部件中使用已存在的JavaScript庫 - JavaScript庫的格式FrameworkWebJavaScript
- golang中go mod使用第三方包Golang
- anaconda怎樣安裝第三方包
- SharePoint Framework 在web部件中使用已存在的JavaScript庫 - 捆綁打包和外部引用FrameworkWebJavaScript
- vue樣式寫在data中,作用在:style上Vue
- (中級)快捷樣式屬性
- 列舉在Web前端開發中經常會設定的特殊樣式!Web前端
- SharePoint Framework 把你的客戶端web部件連線到SharePointFramework客戶端Web
- SharePoint Framework 構建你的第一個web部件(三)FrameworkWeb
- SharePoint Framework 構建你的第一個web部件(一)FrameworkWeb
- SharePoint Framework 構建你的第一個web部件(二)FrameworkWeb
- 解決lib-flexible,第三方ui樣式縮小FlexUI
- Android中Context樣式分析AndroidContext
- JQuery中操作Css樣式的方法jQueryCSS
- 列舉在移動Web開發中經常會設定的特殊樣式!Web
- SharePoint Framework 配置你的SharePoint客戶端web部件開發環境Framework客戶端Web開發環境
- Firefox與IE在CSS樣式表中的差異FirefoxCSS
- RN中佈局樣式的寫法
- vue父元件中修改子元件樣式Vue元件
- Word中的樣式設定快捷鍵
- asp.net中皮膚與樣式ASP.NET
- WEB基礎之:CSS 使用者介面樣式WebCSS
- 常用CSS樣式2:其它樣式CSS
- 常用CSS樣式1:文字樣式CSS
- 趣味小教程|在 macOS Monterey 中更改游標的顏色樣式Mac
- react內聯樣式使用webpack將px轉remReactWebREM
- nuxt3_在nuxt3中建立並使用全域性sass樣式檔案UX
- 1.5 常用CSS樣式1:文字樣式CSS
- 1.6 常用CSS樣式2:其它樣式CSS
- 繫結class樣式和style樣式
- vue中修改Element ui樣式不起作用VueUI
- css中四種頁面編寫樣式CSS
- qt中設定tab樣式為箭頭QT