Develop Lightning Components faster with Lightning Data...

34
Develop Lightning Components faster with Lightning Data Service Fabien Taillon – Salesforce MVP – CTO @ @FabienTaillon Madrid 1st June 2017

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

Page 1: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Madrid 1st June 2017

Page 2: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Fabien TaillonSalesforce MVP

CTO @TEXEÏ

Paris Developer Group co-leader

French Touch Dreamin co-organizer

@FabienTaillon

www.fabientaillon.com

Page 3: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Lightning Page made of several Components

Page 4: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Lightning Page made of several Components

Page 5: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Before Lightning Data Service

Apex Controller

Markup JS Controller

Component 1

Markup JS Controller

Component 2

Markup JS Controller

Component 3

Page 6: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 7: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 8: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 9: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

With Lightning Data Service

Markup

Component 1

Markup

Component 2

Markup

Component 3

LDSController

Record Cache

Page 10: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 11: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 12: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 13: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 14: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 15: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster
Page 16: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 17: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 18: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: Markup

Page 19: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: Markup

Page 20: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: Markup

Page 21: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: JS

Page 22: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: JS

Page 23: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: JS

Page 24: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: JS

Page 25: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code before: Apex Class

+ TEST CLASS !

Page 26: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code after: Only markup !

Page 27: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Code after: Only markup !

Page 28: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Better performances, less code !

Without Lightning Data Service

With Lightning Data Service

TEST CLASS

Markup JS Apex

Page 29: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Better performances, less code !

Page 30: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Methods: Save, Delete

Page 31: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Methods: Save, Delete

Page 32: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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

Page 33: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

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)

Page 34: Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster

Q & AMadrid 1st June 2017