• Salesforce DX 简介


    Salesforce DX

    Salesforce DX (Salesforce Developer Experience) 是 Salesforce 推出的一个新的开发和部署模式,旨在提供更好的开发者体验。在 Salesforce 官网和 Trailhead 网站中都可以找到很多相关的介绍和教程。目前 Salesforce DX 的某些文档还处于 Beta 阶段。

    本文将简单介绍其优点和开发流程。

    Salesforce DX 的优点

    Salesforce DX(下面简称SFDX)有两个主要优点:

    1. SFDX 符合快速迭代的开发模式
    2. SFDX 提供了统一的命令行工具在代码库和服务器之间进行通信和同步

    SFDX 对快速迭代的支持

    在 Salesforce DX(下面简称SFDX)出现之前,开发者主要是通过部署不同类型的沙盒进行开发,如图所示:

    开发环境结构图

    图片取材于官方文档

    这种结构的缺陷在于沙盒环境的搭建。

    在多个功能同时进行开发的情况下,需要同时拥有多个开发的沙盒,即上图的“Developer Sandbox”。这些沙盒没法同时拥有所有已经开发的功能。随着项目的发展,越来越多的沙盒会因为没有特定的功能而“过时”,这就需要创建新的沙盒或刷新已有的沙盒。而这些操作需要耗费大量的时间,对于敏捷开发和快速迭代造成影响。

    为了改进这种缺陷,SFDX 提供了一种新的概念:Scratch org。Scratch org 是一种可以快速搭建的“沙盒”,只包含了特定的功能。开发者可以通过 SFDX 中的设置快速创建 Scratch org,在上面开发新的功能,然后将所做的更改直接提取出来放到代码库中进行整合。

    通过这样一种流程,之前笨重的“开发沙盒”就被轻盈的 Scratch org 所取代,为快速迭代和持续集成提供了更好的支持。

    Salesforce 命令行工具

    Salesforce 随着 SFDX 一起推出了命令行工具(下面简称 CLI)。在此之前,开发者一般使用官方的 Force.com IDE 或其他第三方插件(比如 MavensMate)来进行本地代码和服务器之间的通信。CLI 作为整合这些功能的工具而出现。它可以和各种代码编辑器结合使用,包含了在开发中需要的各种操作和命令,让开发者可以更方便的将本地修改上传到各种 Scratch org 中或者将 Scratch org 中的修改同步到本地代码库。

    SFDX 开发过程示例

    下面通过一些简单的例子来说明 SFDX 的工作流程。

    前提条件

    在使用 SFDX 开发之前,需要先完成以下几个部分:

    1. 拥有一个 Salesforce 环境来作为基础(在 SFDX 中被称为“Dev Hub”)。Scratch org 就会基于它来建立
    2. 在第一步中的 Salesforce 环境中启用“Dev Hub”功能。可以通过设置界面搜索“Dev Hub”来启用
    3. 安装 Salesforce CLI 工具

    登录“Dev Hub”环境

    在进行开发之前,先要登录 Dev Hub 环境。

    打开命令行,输入命令:

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

    在此命令之后,系统会自动打开浏览器,显示 Salesforce 的登录页面。在此页面中像平时一样登录要作为“Dev Hub”的 Salesforce 环境即可。在登录之后,这个“Dev Hub”就被作为接下来创建 Scratch org 的基础,记录在系统中。

    命令讲解:

    1. “sfdx force:auth:web:login”部分是基础命令,用来登录
    2. “-d”参数是设定接下来登录的“Dev Hub”是默认的。系统中可以同时拥有多个“Dev Hub”。要注意的是,当创建了 Scratch org 后,这条命令也可以用来登录 Scratch org。在这时,不要使用“-d”参数
    3. “-a”参数是为这个“Dev Hub”设定一个好记的别名。在这里我们使用“ExampleDevHub”

    在命令行中输入命令:

    sfdx force:org:open -u ExampleDevHub
    

    即可打开浏览器直接进入刚才建立的以“ExampleDevHub”为别名的“Dev Hub”环境

    当创建了 Scratch org 后,这条命令也可以用来打开浏览器直接进入 Scratch org。

    建立 SFDX 项目

    在使用 SFDX 之前,需要先建立一个项目。

    在命令行中使用以下命令建立一个名为“ExampleProj”的项目:

    sfdx force:project:create -n ExampleProj
    

    该命令会建立以下目录结构:

    SFDX 项目目录结构图

    其中,“sfdx-project.json”文件包含了该项目的基本信息,“config”文件夹下的“project-scratch-def.json”文件包含了建立 Scratch org 的基本配置信息,“force-app”目录则用来存放代码。

    建立 Scratch org

    使用命令行进入 SFDX 项目的目录,然后输入以下命令即可建立一个 Scratch org:

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

    命令解释:

    1. “-s”参数把即将建立的 Scratch org 作为该项目默认的 Scratch org
    2. “-f”参数声明了即将建立的 Scratch org 是基于哪一个配置文件
    3. “-a”参数是设定别名

    接下来使用命令:

    sfdx force:org:open -u ExampleScratchOrg
    

    即可打开浏览器直接进入刚才建立的以“ExampleScratchOrg”为别名的 Scratch org。

    使用命令:

    sfdx force:org:list
    

    可以查看当前系统中已经记录的“Dev Hub”环境和已经建立的 Scratch org 列表。

    使用 Scratch org

    在 Scratch org 中,开发者(或管理员)可以和使用真正的 Salesforce 环境一样开发或配置功能。于此同时,Salesforce CLI 工具也提供了一系列的命令来进行相关的操作,比如建立 Apex 类、建立 Lightning 组件等。

    代码库与 Scratch org 同步

    SFDX 的一个重要功能就是将代码库与 Scratch org 同步。Salesforce CLI 提供了两个重要的命令来实现这些操作:

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

    将更改从 Scratch org 同步到本地代码库

    开发者可以登录 Scratch org 进行开发和配置。当完成开发后,可以在 SFDX 中使用命令“sfdx force:source:pull”来将更改同步到本地的代码库。

    比如:在上面建立的 Scratch org 中建立一个新的自定义对象“地址”,API 名字叫“Address__c”。

    要将此更改同步到本地代码库,可以在命令行中运行:

    sfdx force:source:pull
    

    运行的结果如图:

    SFDX pull 命令结果

    可以看到,刚才建立的新的自定义对象,包括随之生成的页面布局,以及相关的简档设置都以元数据的形式保存到了“force-app”文件夹中。

    接下来开发者可以将此更改拷贝到 Git 或其他代码库中进行提交。

    将更改从本地代码库同步到 Scratch org

    在本地代码库中,也可以新建一些组件,比如 Apex 类或 Lightning 组件等,然后通过命令“sfdx force:source:push”将其同步到 Scratch org 中。

    比如:在之前建立的 Scratch org 中并没有任何 Apex 类,我们在命令行中运行:

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

    这条命令就在本地代码库的文件夹“force-app/main/default/classes”下面建立了一个名叫“AccountController”的 Apex 类。

    然后在命令行中运行:

    sfdx force:source:push
    

    运行的结果如图:

    SFDX push 命令结果

    接下来,我们登录 Scratch org,进入 Developer Console,可以看到刚才建立的 Apex 类“AccountController”已经被同步过来了。

    同步到 Scratch org 的 Apex 类

  • 相关阅读:
    [zz]利用__FILE__, __LINE__, __FUNCTION__跟踪调试程序
    [zz]va_start() 和 va_end()函数应用
    [zz]shmdt与shmctl的区别
    [zz]GNU C 扩展之__attribute__ 机制简介 [2]
    Linux errno 错误含义速查
    过滤器的简介
    MyBatis中的原理
    文件上传
    mybatis实体为什么要提供一个无参的构造函数
    为什么要有无参构造方法
  • 原文地址:https://www.cnblogs.com/chengcheng0148/p/salesforce_dx_basic.html
Copyright © 2020-2023  润新知