Develop Lightning Components faster with Lightning Data Servicedreamole.es/wp-content/uploads/2017/06/Develop-Lightning... · 2017. 6. 23. · Develop Lightning Components faster
Post on 15-Oct-2020
1 Views
Preview:
Transcript
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
top related