(三)執行並除錯webpart
在上一篇部落格(二)使用Yeoman建立SharePoint Framework(SPFx)專案中,我們建立了一個簡單的HelloWorld webpart,下面我們在本地執行這個webpart,首先開啟Powershell進入專案資料夾”firstwebpart“,在執行webpart之前,需要在本地安裝一個開發者證書,以在本地環境使用https協議執行和除錯webpart,使用如下命令來安裝證書:
命令執行結果如下,如果在執行過程中彈出安裝證書的提示框,點選確認安裝即可。
安裝證書之後,我們使用“gulp serve”命令在本地localhost:4321啟動https伺服器,並啟動預設瀏覽器執行 webpart,因為是在本地除錯環境中除錯,所以並不需要連線SharePoint Online。
SPFx使用開源工具gulp執行一些任務,例如gulp serve命令所執行的任務包括啟動本地除錯伺服器,將TypeScript編譯為純Javascript,將scss轉換成css,將Javascript檔案和css檔案捆綁壓縮等等。關於gulp的詳細介紹請點選這裡,另外推薦這篇有趣的文章,詳細講解了現代的前端開發框架的來龍去脈,非常有助於理解SPFx的專案結構。目前我們只需要知道gulp幫助我們在本地執行和除錯webpart即可。
gulp serve命令執行後會自動開啟IE,啟動本地的除錯環境(即工作臺workbench)
點選加號按鈕,新增我們建立的webpart:
新增之後就會顯示webpart中的預設內容如下:
我們可以點選編輯按鈕在頁面右側開啟webpart屬性編輯器:
試一下修改webpart屬性編輯器裡的HelloWorld為“Hello SPFx”,可以看到webpart的內容也會隨之實時修改:
以上就是在本地執行webpart的過程,現在開啟Code,回到專案中,檢視webpart的專案程式碼結構。
簡要介紹一下各個資料夾的作用,第一個是config資料夾,其中包含的檔案用於配置專案打包和釋出,各個檔案的作用簡述如下:
其中:
- config.json: 用於配置轉換和捆綁後的js檔案的輸出路徑,也可用於引入外部資源。
- copy-assets.json: 用於配置CDN部署路徑。
- deploy-azure-storage.json: 用於配置Azure Storage的賬戶,方便將js檔案部署到Azure Storage中。
- package-solution.json: 用於配置打包以及打包後生成的.sppkg包的路徑。
- serve.json: 用於配置工作臺除錯環境。我們在剛才使用gulp serve除錯的時候使用了這裡的配置資訊。
- tslint.json: 用於配置TypeScript型別檢查。
- write-manifests.json: 用於配置CDN路徑。
然後是dist資料夾,,用來儲存最終生成的客戶端js程式碼,這些js程式碼可以直接在瀏覽器中執行:
然後是lib資料夾,這個資料夾用於除錯,可以暫時忽略。接下來的node_modules資料夾用來儲存專案所有的依賴的包,例如TypeScript等等。然後是最重要的src資料夾,包含開發這個webpart的TypeScript程式碼,樣式等:
其中HelloWorldWebPart.manifest.json檔案定義了webpart的id、別名、部署到SharePoint Online之後所屬的組名,webpart的名字和描述以及其他一些資訊。HelloWorldWebPart.modules.scss定義了webpart的樣式,HelloWorldWebPart.ts中包含TypeScript程式碼,在執行gulp serve的時候,TypeScript會被轉換成純js,scss會被轉換成css。
TypeScript是微軟官方推出一種語言,它是JavaScript 的型別的超集,它可以編譯成純JavaScript。編譯出來的JavaScript 可以執行在任何瀏覽器上。TypeScript更適合開發大型的前端應用程式。關於TypeScript的詳細說明可以參見TypeScript中文手冊。開啟HelloWorldWebPart.ts可以看到webpart的TypeScript原始碼,原始碼由三個部分組成,第一部分是使用import關鍵字匯入資源和樣式,例如匯入SPFx框架中的BaseClientSideWebPart類,所有的webpart都需要繼承此類並且重寫render()方法:
程式碼的第二部分定義了一個介面“IHelloWorldWebPartProps”,這個介面中定義了一個webpart的屬性,這個屬性就是webpart屬性編輯器中暴露出來的description屬性。
程式碼的第三部分定義了HelloWorldWebPart類,並重寫了render()方法來,定義了一些頁面元素和內容來展示webpart。
除此之外還有一個方法“getPropertyPanelConfiguration()”用來定義webpart的屬性編輯器:
以上就是SPFx客戶端webpart專案的主要結構和程式碼,下一篇部落格將會在此基礎上新增一些控制元件,並在SharePoint Online環境中除錯webpart。
相關推薦
(三)執行並除錯webpart
在上一篇部落格(二)使用Yeoman建立SharePoint Framework(SPFx)專案中,我們建立了一個簡單的HelloWorld webpart,下面我們在本地執行這個webpart,首先開啟Powershell進入專案資料夾”firstwebpa
MSSQL/WMI/PowerShell結合篇(三)執行PowerShell遠程腳本
powershell實時監控的基本原理:WMI Monitor—>數據庫服務器(內網)—>PowerShell—>監控服務器(內外網)—>發送微信前面已介紹如何創建WMI Monitor,本文介紹如何執行PowerShell遠程腳本,實現將WMI獲取到的信息從數據庫服務器傳到監控服務器
Java筆試題(三)——執行緒安全、String、StringBuffer、StringBuilder
1.什麼是執行緒安全? 簡單地說法:執行緒安全可以簡單理解為一個方法或者一個例項可以在多執行緒環境中使用而不會出現問題。 複雜的說法:當多個執行緒訪問同一個物件時,如果不用考慮這些執行緒在執行時環境下的排程和交替執行,也不需要進行額外的同步,或者在呼叫方進行任何其他的協調操作,呼叫這個物件的
程序與執行緒(三)——執行緒的概念與實現
一 什麼是執行緒? 程序中的一條執行流程。 有了執行緒,程序發生了一系列的變化。首先是(1)資源管理,包括地址空間(程式碼段,資料段):程序就是由來管理資源的:地址空間,開啟的檔案,訪問的網路。(2)執行緒把程序的另一部分功能給拆出來了。 程序的執行功能,程序的
基礎演算法與資料結構(三)普通並查集
簡介 在平時的計算中,常常會遇到集合劃分的問題,例如一個集合S={a1,a2,a3,a4},按照一定規則我們可以劃分為S1={a1,a2},S2={a3},s3={a4}。但是在劃分好集合後,又該如何快速確認任意兩個元素之間的關係呢。由此引出並查集。 並查集簡介 並查集最關鍵的表現就是一個集合中的每
【Mybatis】(三)執行CRUD操作——基於XML實現
在【Mybatis】(一)第一個mybatis例項中,已經初步搭建了 MyBatis 框架,實現了查詢所有記錄的功能,並用 JUnit 進行了單元測試 接下來我們將在此基礎上使用基於XML的方式對錶進行CRUD操作 1、定義EmployeeMapper.xm
(三)執行緒傳參詳解,detach()大坑,成員函式做執行緒函式
陷阱1:子執行緒傳遞引數避免使用指標 先來看一段程式碼: 程式碼乍一看好像沒有什麼問題,執行有時也能成功,但是卻隱含了一個很大的bug。 通過除錯:變數i的地址:0x0076e384 {1},變數mvar和mvary的地址:0x003bfe40 {1},可以看
Netty 源碼 NioEventLoop(三)執行過程
希望 handle 是什麽 calculate lose tag eth 目錄 是否為空 Netty 源碼 NioEventLoop(三)執行過程 Netty 系列目錄(https://www.cnblogs.com/binarylei/p/10117436.html) 上
Netty 原始碼 NioEventLoop(三)執行過程
Netty 原始碼 NioEventLoop(三)執行過程 Netty 系列目錄(https://www.cnblogs.com/binarylei/p/10117436.html) 上文提到在啟動 NioEventLoop 執行緒時會執行 SingleThreadEventExecutor#doStar
Java 多執行緒(三)—— 執行緒的生命週期及方法
這篇部落格介紹執行緒的生命週期。 執行緒是一個動態執行的過程,它也有從建立到死亡的過程。 執行緒的幾種狀態 在 Thread 類中,有一個列舉內部類: 上面的資訊以圖片表示如下: 第一張圖: 第二張圖:把等待、計時等待、阻塞看成阻塞一個狀態了 1、新建狀態(ne
執行緒管理(三)執行緒的中斷
宣告:本文是《 Java 7 Concurrency Cookbook 》的第一章, 作者: Javier Fernández González 譯者:鄭玉婷 校對:歐振聰 執行緒的中斷 一個多個執行緒在執行的Java程式,只有當其全部的執行緒執行結束時(更具體的說,是所有非守護執行緒結束或者
Shell指令碼程式設計之(三)執行方式差異(source, sh script, ./script)
利用直接方式或bash執行 該 指令碼 都會使用一個新的 bash 環境來執行指令碼內的指令!也就是說,使用這種執行方式時, 其實 script 是在子程式的 bash 內執行的 知識點 當子程式完成後,在子程式內的各項變數或動作將會結束而不會傳回到父程式中
java 執行緒 (三)執行緒併發的安全性 同步程式碼塊
package cn.sasa.demo1; import java.util.concurrent.ExecutionException; public class ThreadDemo { public static void main(String[] args) th
android 電容屏(三):驅動除錯之驅動程式分析篇
關鍵詞:android 電容屏 tp 工作佇列 中斷 坐點計算 電容屏主要引數 平臺資訊: 核心:linux2.6/linux3.0 系統:android/android4.0 平臺:S5PV310(samsung exynos 4210) 作者:xubin3417
Muduo網路庫原始碼分析(三)執行緒間使用eventfd通訊和EventLoop::runInLoop系列函式
先說第一點,執行緒(程序)間通訊有很多種方式(pipe,socketpair),為什麼這裡選擇eventfd? eventfd 是一個比 pipe 更高效的執行緒間事件通知機制,一方面它比 pipe
Kaldi學習筆記(三)——執行thchs30(清華大學中文語料庫)
1.train_mono.sh 用來訓練單音子隱馬爾科夫模型,一共進行40次迭代,每兩次迭代進行一次對齊操作gmm-init-mono->compile-train-graphs->align-equal-compiled->gmm-est->{gmm-align-compiled-&
Linux多執行緒(三)執行緒清理函式
#include <pthread.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>void *clean_up(void *arg){ char *s= (char *)arg; pr
VBS學習日記(三) 執行外部程式
利用 Vbs 執行外部程式 Vbs 只提供了程式設計的一個基本框架,使用者可以使用 Vbs 來定義變數、過程和函式, vbs 也提供了一些內部函式和物件,但是 Vbs 沒有提供任何命令來訪問 Windows 系統內部的部件,但是值得慶幸的是,Vbs 雖然不能自己完成這些任務
Java併發程式設計——執行緒池的使用(三)執行緒池執行任務、取消任務
一、執行緒池執行Runnable任務 executor.execute(runnable) executor.execute(new Runnable() { @Override public void run(
【貪心演算法(三)】並查集和克魯斯卡爾演算法
1介紹 本節將記錄兩個問題,(1)並查集;(2)克魯斯卡爾演算法;。 這是貪心演算法最後一節,可能不是所有的問題都與貪心演算法有關,但是都是我認為有趣且比較重要的東西,有必要統一學習記錄一下。可能我舉例不太文雅,但絕對沒有歧視和嘲諷任何群體的意思,只是為了讓人印象深刻一些。