Develop Lightning Components faster with Lightning Data...

Post on 15-Oct-2020

3 views 0 download

Transcript of Develop Lightning Components faster with Lightning Data...

Develop Lightning Components faster with Lightning Data ServiceFabien Taillon – Salesforce MVP – CTO @ @FabienTaillon

Madrid 1st June 2017

Fabien TaillonSalesforce MVP

CTO @TEXEÏ

Paris Developer Group co-leader

French Touch Dreamin co-organizer

@FabienTaillon

www.fabientaillon.com

Lightning Page made of several Components

Lightning Page made of several Components

Before Lightning Data Service

Apex Controller

Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Or worse…

Apex Controller 1 Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Apex Controller 2

Apex Controller 3

3 queries to get almost the same fields

Apex Controller 1 Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Apex Controller 2

Apex Controller 3

Name, Phone, Address, MyField__c

Name, Phone, Email

Name, Address, MySecondField__c

3 queries to get almost the same fields

Apex Controller 1 Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Apex Controller 2

Apex Controller 3

Name, Phone, Address, MyField__c

Name, Phone, Email

Name, Address, MySecondField__c

With Lightning Data Service

Markup

Component 1

Markup

Component 2

Markup

Component 3

LDSController

Record Cache

Only 1 query with all the fields !

Markup

Component 1

Markup

Component 2

Markup

Component 3

LDSController

Record Cache

Name, Phone, Address, MyField__c

Name, Phone, Email

Name, Address, MySecondField__c

Name, Phone, Address, Email, MyField__c, MySecondField__c

No server call if data already in the cache

LDSController

Record Cache

Name, Phone, Address, Email,

MyField__c, MySecondField__c

Markup

Component 4

Markup

Component 1

Markup

Component 2

Markup

Component 3

Name, Phone, Address, MyField__c

Name, Phone, Email

Name, Address, MySecondField__c

From a code point of view: from this…

Apex Controller 1 Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Apex Controller 2

Apex Controller 3

To this !

Markup

Component 1

Markup

Component 2

Markup

Component 3

Apex Controller 1 JS Controller

JS Controller

JS Controller

Apex Controller 2

Apex Controller 3

To this !

Markup

Component 1

Markup

Component 2

Markup

Component 3

Apex Controller 1 JS Controller

JS Controller

JS Controller

Apex Controller 2

Apex Controller 3

To this !

Markup

Component 1

Markup

Component 2

Markup

Component 3

Apex Controller 1 JS Controller

JS Controller

JS Controller

Apex Controller 2

Apex Controller 3

To this !

Markup

Component 1

Markup

Component 2

Markup

Component 3

Apex Controller 1 JS Controller

JS Controller

JS Controller

Apex Controller 2

Apex Controller 3

Code before: Markup

Code before: Markup

Code before: Markup

Code before: JS

Code before: JS

Code before: JS

Code before: JS

Code before: Apex Class

+ TEST CLASS !

Code after: Only markup !

Code after: Only markup !

Better performances, less code !

Without Lightning Data Service

With Lightning Data Service

TEST CLASS

Markup JS Apex

Better performances, less code !

Methods: Save, Delete

Methods: Save, Delete

BenefitsNo Apex !

Security

• CRUD

• Field Level Security

Shared cache

• Less server calls → Better performances

• Record values updated across components → Coherent values displayed

• Component notified only if the field updated is used by the cmp → Less code executed

Id is used, not sObject Type → Same Component can be used for different objects

Where it’s (supposed to be) going

Out of Beta

More objects supported (ex: Opportunity isn’t supported)

List Support

Support outside of LEX/SF1 (ex: Lightning Out)

Q & AMadrid 1st June 2017