一个 lightning web component bundle的构成。 可以分成以下部分
我们在创建一个LWC component时,会默认生成一个html / js /meta xml文件,其中meta xml 会指定LWC component很多配置特性,比如当前的LWC component可以引用在哪种类型的lightning page中,api version等配置信息。主要配置项有以下几点:
我们在项目中常用的配置就是lightning__AppPage / lightning__HomePage / lightning__RecordPage/lightning__RecordAction以及lightning__Tab了。
targetConfig
声明。targetConfig有一个属性叫做targets,我们可以使用此属性去声明当前的配置项针对哪个类型的lightning page,针对多个类型的lightning page,我们可以使用逗号','分隔。例如:<targetConfig targets="lightning__RecordPage,lightning__AppPage">
targetConfig下可以配置三个子标签,分别是property / objects / supportedFormFactors,用来给变量进行初始化操作。下面对这三个子标签分别描述。
Property: 我们在LWC js中会使用@api标签声明public变量,使用Property在引用在lightning app builder或者community builder的时候我们可以设置一些初始值以及初始化配置。Property有以下的属性:
上述的属性中,只有name以及type是必填项,其他都是可选项。
objects:当我们在target中声明当前的LWC component在targetConfig中配置了可以引用在lightning record page时,我们可以指定当前的component可以用于哪些objects使用。同targetConfigs一样,他也有一个子标签叫做object用来声明可以用在哪个object中使用。object标签不能使用*来声明可以引用所有objects
supportedFormFactors:我们访问salesforce可能使用手机或者电脑,我们针对不同的媒介访问不同的页面(home page/ record page等)可能需要展示不同的大小,这时我们就需要设置supportedFormFactors了。针对此配置项的配置信息,详情可以查看https://developer.salesforce.com/docs/component-library/documentation/lwc/lwc.use_config_form_factors
上面内容晦涩难懂,以几个例子进行更好的说明:
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="<http://soap.sforce.com/2006/04/metadata>">
<apiVersion>52.0</apiVersion>
<isExposed>false</isExposed>
</LightningComponentBundle>
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="<http://soap.sforce.com/2006/04/metadata>">
<apiVersion>52.0</apiVersion>
<isExposed>true</isExposed>
<masterLabel>Best Component Ever</masterLabel>
<description>This is a demo component.</description>
<targets>
<target>lightning__RecordPage</target>
<target>lightning__AppPage</target>
<target>lightning__HomePage</target>
</targets>
<targetConfigs>
<targetConfig targets="lightning__RecordPage">
<property name="prop1" type="String" />
<objects>
<object>Account</object>
<object>Opportunity</object>
<object>Warehouse__c</object>
</objects>
</targetConfig>
<targetConfig targets="lightning__AppPage, lightning__HomePage">
<property name="prop2" type="Boolean" />
</targetConfig>
</targetConfigs>
</LightningComponentBundle>
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="<http://soap.sforce.com/2006/04/metadata>" fqn="helloWorld">
<apiVersion>52.0</apiVersion>
<isExposed>true</isExposed>
<masterLabel>Hello World</masterLabel>
<targets>
<target>lightningCommunity__Page</target>
<target>lightningCommunity__Default</target>
</targets>
<targetConfigs>
<targetConfig targets="lightningCommunity__Default">
<property name="string" type="String" default="jsMetaValue"></property>
<property name="boolean" type="Boolean" default="true"></property>
<property name="integer" type="Integer" default="5"></property>
<property name="picklist" type="String" default="value3" datasource="value1,value2,value3"></property>
<property name="backgroundColor" type="Color" default="#ff00ff"></property>
</targetConfig>
</targetConfigs>
</LightningComponentBundle>
<?xml version="1.0" encoding="UTF-8"?>
<LightningComponentBundle xmlns="<http://soap.sforce.com/2006/04/metadata>" fqn="tacticalFareOpportunityList">
<apiVersion>50.0</apiVersion>
<isExposed>true</isExposed>
<targets>
<target>lightning__AppPage</target>
<target>lightning__RecordPage</target>
<target>lightning__HomePage</target>
</targets>
</LightningComponentBundle>
参考文档: