学习Lightning Web Components(LWC) ,其中需要使用到SFDX。
现在可以用Lightning Web Components(业内简称LWC)和 Aura Components开发相关的Lightning components。两者都可以相互存在同一个页面下面。LWC是基于传统的HTML和现代的JavaScript进行开发,其主要内核是基于w3c的webcomponents相关开源源码:https://github.com/w3c/webcomponents/
所以,大部分的代码是基于标准的HTML和JS。同时,支持使用 JavaScript Jest测试(https://jestjs.io/)
设置开发环境
安装Salesforce CLI
安装CLI
如果你的电脑里已经安装了nodejs,可以直接通过npm进行安装
1 | npm install sfdx-cli --global |
查看CLI版本
1 | $ sfdx plugins --core |
由于使用LWC需要sfdx 45以上的版本,所以我们需要对sfdx版本进行更新。
更新至最新的版本
在2019年3月以前需要安装pre-release版本
1 | sfdx plugins:install salesforcedx@pre-release |
在2019年3月之后可以直接卸载pre-release版本,并且输入:sfdx update进行安装。
1 | sfdx plugins:uninstall salesforcedx |
IDE
由于LWC无法在Developer Console打开,所以需要使用外部IDE进行开发。
- 官方的playground:为了方便测试,官方给出了在线版的playground,如下:https://developer.salesforce.com/docs/component-library/tools/playground
- Visual Studio Code (VS Code):https://code.visualstudio.com/
- VS Code的Salesforce 开发插件 Salesforce Extension Pack for Visual Studio Code,https://marketplace.visualstudio.com/items?itemName=salesforce.salesforcedx-vscode
- Ligthning Web Components for Visual Studio Code,这个是基于VS Code的LWC开发插件,比较实用,而且具有自动填补功能,建议开发人员下载使用。
- ESLint Extension for VS Code,这个插件能够在未编译前,发现你在开发过程中的错误,https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint
- SalesforceXyTools:此IDE也支持LWC独立开发
申请免费的试用Spring ’19 组织
如果你是Salesforce的客户,你可以使用如下链接进行注册:
https://www.salesforce.com/form/signup/prerelease-spring19.jsp
如果你是Salesforce的Partner,你可以使用如下链接进行注册:
https://www.salesforce.com/form/signup/prerelease-spring19-partner.jsp
兼容性问题
根据官方的说法:
Aura components can contain Lightning web components. However, the opposite doesn’t apply. Lightning web components can’t contain Aura components.
Aura组件可以使用LWC作为一个组件,反过来,LWC里面不能包含Aura组件。但是JavaScript Code,可以在两边相互共享使用。
开发流程
目前有两种开发流程,一种是在IDE上直接开发,然后部署至沙盒环境。另外一种是使用Scratch Orgs,具体流程可以如下
- 用SFDX 连入你的生产环境组织
- 新建一个Scratch Orgs
- 利用VS Code在本地开发LWC
- 将LWC推送至新建的Scratch Orgs进行查看,预览和测试
- 用SFDX 连入你的沙盒环境
- 将本地的LWC转成元数据
- 部署元数据至你的沙盒环境进行查看,预览和测试
实例
使用 Dev Hub
在设置(Setup),搜索’Dev Hub’,并且点Enable。只有打开Dev Hub才可以新建和使用Scratch Org。
新建DX项目
首先需要新建一个 Salesforce DX 项目,下面例子中的mywork可以换成你的项目名字如‘HelloWorld’
1 | sfdx force:project:create --projectname mywork |
登入Salesforce 组织
首先需要登入你的
1 | sfdx force:auth:web:login -d -a DevHub |
授权登入沙盒环境:
1 | sfdx force:auth:web:login -r https://test.salesforce.com |
或者可以添加新的Sandbox Login
1 | $ sfdx force:auth:web:login -r https://test.salesforce.com -d -a DevHub |
登入之后,会跳转到Salesforce授权页面,开发者需要在浏览器页面授权
查看你所拥有的Org
1 | sfdx force:org:list |
这里顺便教几个小技巧,如果需要删除non-active 的Scratch Org,可以输入如下命令行
1 | sfdx force:org:list --clean |
设置默认的 Dev Hub,可以输入如下命令行,新建新的Scratch Org需要生产环境,所以需要把默认的 Dev Hub设置为你的生产环境
1 | sfdx force:config:set defaultdevhubusername=org@username.com --global |
新建一个Scratch Org
开发者需要利用项目文件夹中的配置文件新建一个Scratch Org
1 | sfdx force:org:create -s -f config/project-scratch-def.json -a dreamhouse-org |
如新建成功,会有如下成功的结果并给出用户名:
1 | Successfully created scratch org: 00XXX0000009PENEA2, username: test-XXXX@example.com |
开发者利用用户名可以登入这个Scratch Org,如果需要删除一个某一个Scratch Org,可以输入如下命令行:
1 | $ sfdx force:org:delete -u test-XXXX@example.com |
设置默认的用户名
开发者需要设置默认的用户名defaultusername,这里设置之后,在下面打开Scratch Org时候可以不需要输入。
1 | $ sfdx force:config:set defaultusername=test-XXXX@example.com |
打开Scratch Org
当开发者建立好了Scratch Org,可以利用默认的用户名打开Scratch Org,
1 | $ sfdx force:org:open |
如果没有设置默认的用户名,可以在命令行中指定某一个用户名:
1 | sfdx force:org:open -u test-phvqjvms7dsj@example.com |
新建 Lightning Web Component(LWC)
首先需要新建LWC在如下路径force-app/main/default/lwc,同时文件夹是以lwc为命名.
然后创建LWC
1 | cd force-app/main/default/lwc |
在LWC文件夹下会见到一个名字为helloWorld的文件夹,里面有三个文件helloWorld.html,helloWorld.js,helloWorld.js-meta.xml
其中helloWorld.html是我们熟悉的HTML文件,设置一个input,然后当有输入时候,调用JS函数。
1 | <template> |
在helloWorld.js文件中是JavaScript代码。设置greeting的默认值为’World’,当有输入值修改时,将修改值赋予greeting。
1 | import { LightningElement, track } from 'lwc'; |
最后是XML文件helloWorld.js-meta.xml,这里定义API版本和是否需要在其他LWC显示出来,同时,开发人员可以设置LWC应用于lightning App Page,lightning Record Page,lightning Home Page。
1 |
|
推送本地修改至Scratch Org
当开发者在本地修改或者新建LWC完毕之后,需要推送有关代码到Scratch Org
1 | sfdx force:source:push |
在lightning Home Page使用LWC
- 打开Scratch Org,选择Sales App或者选择‘Home’ Tab。
- 选择‘Edit Page’ ,编辑当前lightning主页。
- 在右边的custom 栏目中拖曳helloWorld LWC 到中间的 组件位置。
- 保存并查看。
新建元数据package
首先可以新建文件夹mdapi_output_dir:
1 | $ mkdir mdapi_output_dir |
其次,创建package,这个package之后会在部署时候运用到:
1 | $ sfdx force:source:convert -d mdapi_output_dir/ --packagename package_name |
这里附上一些小技巧,如下命令行可以查看有什么改变:
1 | $ ls -lR mdapi_output_dir/ |
部署
最后我们需要将上面生成的含有package的文件夹部署至指定目录,可以部署目录至沙盒环境或者生产环境,同时开发者可以定义需要跑的测试类 :
1 | sfdx force:mdapi:deploy -d mdapioutput_dir/ -u "sandbox_username" -l RunSpecifiedTests -r test1,test2,test3,test4 |
或者利用 sfdx force:mdapi:deploy -d <same directory as step 1> -u
1 | sfdx force:mdapi:deploy --deploydir mdapi_output_dir --targetusername username@email.com |
之后会出现状态信息:
1 | === Status |
推送默认至org里面:
1 | sfdx force:source:deploy -p force-app/main/default |
如下命令行可以查看部署结果:
1 | sfdx force:mdapi:deploy:report |
资源
- 【Trailhead 资源】Quick Start: Lightning Web Components,这是官方的Trailhead 教程,建议初学者可以试试做一遍就知道整个开发流程了: https://trailhead.salesforce.com/content/learn/projects/quick-start-lightning-web-components
- 【Trailhead 资源】这也是官方的Trailhead 教程,教开发者使用SFDX,Get Started with Salesforce DX: https://trailhead.salesforce.com/content/learn/trails/sfdx_get_started
- 【源码】Sample Gallery: https://trailhead.salesforce.com/sample-gallery
- 【开发者文档】Lightning Web Components Documentation - Salesforce Lightning Component Library: https://developer.salesforce.com/docs/component-library/documentation/lwc
- 【开发者文档】Salesforce DX Developer Guide | Salesforce Developers: https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_intro.htm
- 【源码】这里提供一些Github源码学习:https://github.com/trailheadapps
- Introduction to Lightning Web Components (LWC) – Apex Hours
- Introducing DreamHouse, DreamInvest, Pure Aloe and Easy Spaces Sample Apps for Lightning Web Components | Developer Force Blog