欢迎光临熊猫体育官方网站

crm系統

免費試用400-821-5041


Salesforce開發之Lightning Web組件基礎知識(二)

上節帶您了解了Lightning Web組件的基礎知識,本節將為您介紹如何創建Lightning Web組件。

 

假設您想要構建一個獨立于Salesforce中的特定對象的數據顯示元素。ebikes示例庫中的productCard組件是一個很好的例子。讓我們研究一下該組件,并從頭開始構建我們自己的版本,這樣您就可以看到它是如何變成一個成熟的Lightning Web組件的。當您構建組件的各個部分并探索更多示例時,您能很快獲得基相關的礎知識。

 

在本單元中,我們使用Visual Studio Code和Salesforce擴展開發一個Lightning Web組件。我們將文件部署到組織,并構建一個應用程序來使用您的組件。如第一單元所述,您需要對Salesforce DX有一定的熟悉度才能繼續。要完成本單元,您需要:

1、帶有Salesforce擴展包的Visual Studio Code(VS Code)

2、Salesforce CLI

3、啟用Dev Hub的org

4、將My Domain部署到已啟用Dev Hub的org中的用戶。

 

 

查看 HTML 文件

Lightning Web組件的HTML文件都包含模板標簽,該標簽包含定義組件結構的HTML。讓我們看一下HTML中ebikes存儲庫的productCard組件簡化版的HTML。按照這些示例粘貼到VS Code中。

1、在VS Code命令面板中選擇SFDX來創建新項目,接受標準模板,并給它起名為bikeCard。

2、在force-app/main/default下,右鍵單點擊lwc文件夾,選擇SFDX: Create Lightning Web Component。

3、輸入app作為新組件的名稱。

4、連按兩次回車,接受默認的force-app/main/default/lwc。

5、將以下內容粘貼到app.html中(替換文件中的現有HTML)

Salesforce開發

大括號中的標識符被綁定到相應的JavaScript類中的同名字段。

6、將以下代碼粘貼到app.js中。

Salesforce開發

7、保存文件。

現在讓我們來看一個真實的例子。假設您想要顯示數據,但加載需要一些時間,您又不希望用戶知道發生了什么。您可以在模板中使用lwc:if和lwc:else條件指令來確定呈現哪些內容。

 

1、將以下代碼粘貼到app.html中。在HTML文件中,ready的值為true之前,“display”div標簽中的內容不會出現。

Salesforce開發

2、將以下內容粘貼到應用程序.js中。這將保存我們的數據值并設置 3 秒計時器。3 秒后,應顯示內容。(當然,這只是出于測試目的。

將以下代碼粘貼到app.js中。這能保存我們的數據值,并自動設置一個3秒計時器。3秒后,內容就會出現。

3、保存文件。

 

二、基礎Lightning Web組件

現在,您不想從頭開始構建所有組件。所以我們來探討一下基礎Lightning Web組件的使用方法。當然,還有很多組件,包括字段類型、顯示控制器、導航項等,所有這些都在組件參考中列出。

 

讓我們把Bike的細節突出出來。在app.html文件中,用lightning-badge組件替換上一個例子中的material和category的div標簽。下面是HTML的內容。

Salesforce開發

保存文件。

 

Steel和Mountain這兩個詞就能作為badge出現了。

 

 

組件構建結構

一個組件只需要一個具有相同名稱的文件夾和文件,它們會根據名字和位置自動連接。

Salesforce開發

所有Lightning Web組件都有一個命名空間,該空間用連字符與文件夾名稱分隔。例如,在默的認命名空間c中,文件夾名稱為app的Lightning Web 組件的標記是<c-app>。

 

但是,Salesforce平臺不允許在組件的文件夾或文件名中使用連字符。如果組件的名字有多個單詞,比如mycomponent該怎么辦?總不能將文件夾和文件命名為my-component,這里,我們有一個更方便的解決方案:駝峰式命名,myComponent。駝峰式大小寫的組件文件夾名稱在標記中映射為kebab大小寫。要想引用文件夾名為myComponent的組件,請使用<c-my-component>。例如,LWC示例存儲庫的viewSource文件夾包含viewSource組件的文件。當hello組件引用HTML中的viewSource組件時,它使用c-view-source。接下來讓我們看看JavaScript。

 

 

使用JavaScript

正如您到目前為止所看到的,JavaScript方法定義了如何處理輸入、數據、事件、狀態變化等,以便組件能正常工作。一個Lightning web組件的JavaScript文件必須包含以下代碼,其中MyComponent是您為組件類分配的名稱。

Salesforce開發

export語句定義了一個擴展Lightning Element類的類。作為最佳實踐,類的名稱通常與JavaScript類的文件名一致,但這不是必需的。

 

 

LWC 模塊

Lightning Web組件使用模塊來捆綁核心功能,并使其能在您的組件文件中被JavaScript訪問。Lightning Web組件的核心模塊是lwc。從import語句開始模塊,并指定組件使用的模塊功能。import語句表示JavaScript使用了lwc模塊中的Lightning Element功能。

1、Lightning Element是Lightning web組件的基類,它允許我們使用connectedCallback()。

2、connectedCallback()方法是生命周期掛鉤之一,當在文檔對象模型(DOM)中插入組件時會觸發該方法。在這種情況下,它會啟動計時器。

 

 

生命周期掛鉤

Lightning Web組件提供了一些方法,讓您的代碼能夠“鉤住”組件生命周期中的關鍵事件,這些事件包括當一個組件被:創建、添加到DOM中、在瀏覽器中呈現、遇到錯誤、從DOM中刪除。

 

使用回調方法響應這些生命周期事件中的任何一個。例如,當組件添加到DOM中時,會調用connectedCallback()。從組件從DOM中刪除時,會調用disconnectedCallback()。在我們用于測試條件渲染的JavaScript文件中,我們使用connectedCallback()方法,在組件被插入DOM時自動執行代碼。等待3秒鐘,然后將ready設置為true。

Salesforce開發

當您在VS Code這樣的編輯器中使用這個例子時,您可能會看到setTimeout()函數的lint警告"Restricted async operation...."。該警告表明您正在使用一個經常被誤用的異步操作;它根據時間延遲行為,而不是等待事件。在這種情況下,setTimeout()適合演示任意的時間延遲,并且警告您不應該阻止使用它。

 

另外,注意我們使用了this關鍵字。如果您寫過JavaScript,應該對關鍵字的用法很熟悉,就像它在其他環境中一樣。JavaScript中的this關鍵字指的是當前上下文的最高層。在這里,上下文就是這個類。connectedCallback()方法為頂層的ready變量賦值。這是Lightning Web組件如何讓您將JavaScript功能引入開發的一個很好的例子。

 

 

修飾符

在JavaScript中,修飾符經常用于修改一個屬性或函數的行為。要想使用修飾符,需要從lwc模塊中導入它,并將其放在屬性或函數之前。

Salesforce開發

您可以導入多個修飾符,但是一個屬性或函數只能有一個修飾符。Lightning Web組件修飾符的例子包括:

 

1、@api:將字段標記為公共字段。公共屬性定義組件的API,在其HTML標記中使用該組件的所有者組件可以訪問該組件的公共屬性。所有公共屬性都是反應式的,這意味著框架會觀察屬性的更改。當屬性值發生變化時,框架會做出反應并重新顯示該組件。字段和屬性幾乎是等同的術語。對于組件使用者來說,字段就是屬性。在Lightning Web 組件中,只有組件作者用來@api修飾的字段才能作為對象屬性公開提供給使用者。

 

2、@track:所有字段都是反應式的,如果對象屬性或數組元素發生變化,并且該字段被用于一個模板中,框架會重新提交組件。如果您要更改整個屬性的值,則無需使用@track。

 

3、@wire:為您提供了一種從Salesforce org獲取和綁定數據的簡單方法。

 

下面是使用@api修飾符的例子,在一個app組件中呈現bike組件值的例子。文件結構如下所示:

Salesforce開發

app組件使用以下HTML。

Salesforce開發

app組件使用以下JavaScript代碼。

Salesforce開發

bike組件使用以下HTML。

自行車組件使用以下 JavaScript。

Salesforce開發

現在您已經可以嘗試創建Lightning Web 組件了。下節,我們將討論組件的生存環境。