Salesforce DX 簡(jiǎn)介

Salesforce DX

Salesforce DX (Salesforce Developer Experience) 是 Salesforce 推出的一個(gè)新的開(kāi)發(fā)和部署模式,旨在提供更好的開(kāi)發(fā)者體驗(yàn)。在 Salesforce 官網(wǎng)和 Trailhead 網(wǎng)站中都可以找到很多相關(guān)的介紹和教程。目前 Salesforce DX 的某些文檔還處于 Beta 階段。

本文將簡(jiǎn)單介紹其優(yōu)點(diǎn)和開(kāi)發(fā)流程。

Salesforce DX 的優(yōu)點(diǎn)

Salesforce DX(下面簡(jiǎn)稱(chēng)SFDX)有兩個(gè)主要優(yōu)點(diǎn):

  1. SFDX 符合快速迭代的開(kāi)發(fā)模式
  2. SFDX 提供了統(tǒng)一的命令行工具在代碼庫(kù)和服務(wù)器之間進(jìn)行通信和同步

SFDX 對(duì)快速迭代的支持

在 Salesforce DX(下面簡(jiǎn)稱(chēng)SFDX)出現(xiàn)之前,開(kāi)發(fā)者主要是通過(guò)部署不同類(lèi)型的沙盒進(jìn)行開(kāi)發(fā),如圖所示:

開(kāi)發(fā)環(huán)境結(jié)構(gòu)圖

圖片取材于官方文檔

這種結(jié)構(gòu)的缺陷在于沙盒環(huán)境的搭建。

在多個(gè)功能同時(shí)進(jìn)行開(kāi)發(fā)的情況下,需要同時(shí)擁有多個(gè)開(kāi)發(fā)的沙盒,即上圖的“Developer Sandbox”。這些沙盒沒(méi)法同時(shí)擁有所有已經(jīng)開(kāi)發(fā)的功能。隨著項(xiàng)目的發(fā)展,越來(lái)越多的沙盒會(huì)因?yàn)闆](méi)有特定的功能而“過(guò)時(shí)”,這就需要?jiǎng)?chuàng)建新的沙盒或刷新已有的沙盒。而這些操作需要耗費(fèi)大量的時(shí)間,對(duì)于敏捷開(kāi)發(fā)和快速迭代造成影響。

為了改進(jìn)這種缺陷,SFDX 提供了一種新的概念:Scratch org。Scratch org 是一種可以快速搭建的“沙盒”,只包含了特定的功能。開(kāi)發(fā)者可以通過(guò) SFDX 中的設(shè)置快速創(chuàng)建 Scratch org,在上面開(kāi)發(fā)新的功能,然后將所做的更改直接提取出來(lái)放到代碼庫(kù)中進(jìn)行整合。

通過(guò)這樣一種流程,之前笨重的“開(kāi)發(fā)沙盒”就被輕盈的 Scratch org 所取代,為快速迭代和持續(xù)集成提供了更好的支持。

Salesforce 命令行工具

Salesforce 隨著 SFDX 一起推出了命令行工具(下面簡(jiǎn)稱(chēng) CLI)。在此之前,開(kāi)發(fā)者一般使用官方的 Force.com IDE 或其他第三方插件(比如 MavensMate)來(lái)進(jìn)行本地代碼和服務(wù)器之間的通信。CLI 作為整合這些功能的工具而出現(xiàn)。它可以和各種代碼編輯器結(jié)合使用,包含了在開(kāi)發(fā)中需要的各種操作和命令,讓開(kāi)發(fā)者可以更方便的將本地修改上傳到各種 Scratch org 中或者將 Scratch org 中的修改同步到本地代碼庫(kù)。

SFDX 開(kāi)發(fā)過(guò)程示例

下面通過(guò)一些簡(jiǎn)單的例子來(lái)說(shuō)明 SFDX 的工作流程。

前提條件

在使用 SFDX 開(kāi)發(fā)之前,需要先完成以下幾個(gè)部分:

  1. 擁有一個(gè) Salesforce 環(huán)境來(lái)作為基礎(chǔ)(在 SFDX 中被稱(chēng)為“Dev Hub”)。Scratch org 就會(huì)基于它來(lái)建立
  2. 在第一步中的 Salesforce 環(huán)境中啟用“Dev Hub”功能??梢酝ㄟ^(guò)設(shè)置界面搜索“Dev Hub”來(lái)啟用
  3. 安裝 Salesforce CLI 工具

登錄“Dev Hub”環(huán)境

在進(jìn)行開(kāi)發(fā)之前,先要登錄 Dev Hub 環(huán)境。

打開(kāi)命令行,輸入命令:

sfdx force:auth:web:login -d -a ExampleDevHub

在此命令之后,系統(tǒng)會(huì)自動(dòng)打開(kāi)瀏覽器,顯示 Salesforce 的登錄頁(yè)面。在此頁(yè)面中像平時(shí)一樣登錄要作為“Dev Hub”的 Salesforce 環(huán)境即可。在登錄之后,這個(gè)“Dev Hub”就被作為接下來(lái)創(chuàng)建 Scratch org 的基礎(chǔ),記錄在系統(tǒng)中。

命令講解:

  1. “sfdx force:auth:web:login”部分是基礎(chǔ)命令,用來(lái)登錄
  2. “-d”參數(shù)是設(shè)定接下來(lái)登錄的“Dev Hub”是默認(rèn)的。系統(tǒng)中可以同時(shí)擁有多個(gè)“Dev Hub”。要注意的是,當(dāng)創(chuàng)建了 Scratch org 后,這條命令也可以用來(lái)登錄 Scratch org。在這時(shí),不要使用“-d”參數(shù)
  3. “-a”參數(shù)是為這個(gè)“Dev Hub”設(shè)定一個(gè)好記的別名。在這里我們使用“ExampleDevHub”

在命令行中輸入命令:

sfdx force:org:open -u ExampleDevHub

即可打開(kāi)瀏覽器直接進(jìn)入剛才建立的以“ExampleDevHub”為別名的“Dev Hub”環(huán)境

當(dāng)創(chuàng)建了 Scratch org 后,這條命令也可以用來(lái)打開(kāi)瀏覽器直接進(jìn)入 Scratch org。

建立 SFDX 項(xiàng)目

在使用 SFDX 之前,需要先建立一個(gè)項(xiàng)目。

在命令行中使用以下命令建立一個(gè)名為“ExampleProj”的項(xiàng)目:

sfdx force:project:create -n ExampleProj

該命令會(huì)建立以下目錄結(jié)構(gòu):

SFDX 項(xiàng)目目錄結(jié)構(gòu)圖

其中,“sfdx-project.json”文件包含了該項(xiàng)目的基本信息,“config”文件夾下的“project-scratch-def.json”文件包含了建立 Scratch org 的基本配置信息,“force-app”目錄則用來(lái)存放代碼。

建立 Scratch org

使用命令行進(jìn)入 SFDX 項(xiàng)目的目錄,然后輸入以下命令即可建立一個(gè) Scratch org:

sfdx force:org:create -s -f config/project-scratch-def.json -a ExampleScratchOrg

命令解釋?zhuān)?/p>

  1. “-s”參數(shù)把即將建立的 Scratch org 作為該項(xiàng)目默認(rèn)的 Scratch org
  2. “-f”參數(shù)聲明了即將建立的 Scratch org 是基于哪一個(gè)配置文件
  3. “-a”參數(shù)是設(shè)定別名

接下來(lái)使用命令:

sfdx force:org:open -u ExampleScratchOrg

即可打開(kāi)瀏覽器直接進(jìn)入剛才建立的以“ExampleScratchOrg”為別名的 Scratch org。

使用命令:

sfdx force:org:list

可以查看當(dāng)前系統(tǒng)中已經(jīng)記錄的“Dev Hub”環(huán)境和已經(jīng)建立的 Scratch org 列表。

使用 Scratch org

在 Scratch org 中,開(kāi)發(fā)者(或管理員)可以和使用真正的 Salesforce 環(huán)境一樣開(kāi)發(fā)或配置功能。于此同時(shí),Salesforce CLI 工具也提供了一系列的命令來(lái)進(jìn)行相關(guān)的操作,比如建立 Apex 類(lèi)、建立 Lightning 組件等。

代碼庫(kù)與 Scratch org 同步

SFDX 的一個(gè)重要功能就是將代碼庫(kù)與 Scratch org 同步。Salesforce CLI 提供了兩個(gè)重要的命令來(lái)實(shí)現(xiàn)這些操作:

  • sfdx force:source:pull
  • sfdx force:source:push

將更改從 Scratch org 同步到本地代碼庫(kù)

開(kāi)發(fā)者可以登錄 Scratch org 進(jìn)行開(kāi)發(fā)和配置。當(dāng)完成開(kāi)發(fā)后,可以在 SFDX 中使用命令“sfdx force:source:pull”來(lái)將更改同步到本地的代碼庫(kù)。

比如:在上面建立的 Scratch org 中建立一個(gè)新的自定義對(duì)象“地址”,API 名字叫“Address__c”。

要將此更改同步到本地代碼庫(kù),可以在命令行中運(yùn)行:

sfdx force:source:pull

運(yùn)行的結(jié)果如圖:

SFDX pull 命令結(jié)果

可以看到,剛才建立的新的自定義對(duì)象,包括隨之生成的頁(yè)面布局,以及相關(guān)的簡(jiǎn)檔設(shè)置都以元數(shù)據(jù)的形式保存到了“force-app”文件夾中。

接下來(lái)開(kāi)發(fā)者可以將此更改拷貝到 Git 或其他代碼庫(kù)中進(jìn)行提交。

將更改從本地代碼庫(kù)同步到 Scratch org

在本地代碼庫(kù)中,也可以新建一些組件,比如 Apex 類(lèi)或 Lightning 組件等,然后通過(guò)命令“sfdx force:source:push”將其同步到 Scratch org 中。

比如:在之前建立的 Scratch org 中并沒(méi)有任何 Apex 類(lèi),我們?cè)诿钚兄羞\(yùn)行:

sfdx force:apex:class:create -n AccountController -d force-app/main/default/classes

這條命令就在本地代碼庫(kù)的文件夾“force-app/main/default/classes”下面建立了一個(gè)名叫“AccountController”的 Apex 類(lèi)。

然后在命令行中運(yùn)行:

sfdx force:source:push

運(yùn)行的結(jié)果如圖:

SFDX push 命令結(jié)果

接下來(lái),我們登錄 Scratch org,進(jìn)入 Developer Console,可以看到剛才建立的 Apex 類(lèi)“AccountController”已經(jīng)被同步過(guò)來(lái)了。

同步到 Scratch org 的 Apex 類(lèi)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,551評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,021評(píng)論 25 709
  • linux資料總章2.1 1.0寫(xiě)的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無(wú)法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,230評(píng)論 2 33
  • Ubuntu的發(fā)音 Ubuntu,源于非洲祖魯人和科薩人的語(yǔ)言,發(fā)作 oo-boon-too 的音。了解發(fā)音是有意...
    螢火蟲(chóng)de夢(mèng)閱讀 100,658評(píng)論 9 468
  • 2016/7/18 1.函數(shù)聲明和函數(shù)表達(dá)式有什么區(qū)別 (*) 函數(shù)聲明: 函數(shù)表達(dá)式: 在聲明一個(gè)變量的時(shí)候,j...
    嘿菠蘿閱讀 229評(píng)論 0 0

友情鏈接更多精彩內(nèi)容