Successfully reported this slideshow.
Your SlideShare is downloading. ×

Best Practices for Lightning Apps

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 33 Ad

Best Practices for Lightning Apps

Download to read offline

Lightning allows developers to customize their apps to a degree not previously possible - especially when using the Lightning App Builder and the new Lightning Utility Bar. In this webinar, we will introduce you to best practices for designing component-based architecture when building advanced apps that make the most out of new Lightning Experience features.

Lightning allows developers to customize their apps to a degree not previously possible - especially when using the Lightning App Builder and the new Lightning Utility Bar. In this webinar, we will introduce you to best practices for designing component-based architecture when building advanced apps that make the most out of new Lightning Experience features.

Advertisement
Advertisement

More Related Content

Slideshows for you (20)

Similar to Best Practices for Lightning Apps (20)

Advertisement

Recently uploaded (20)

Best Practices for Lightning Apps

  1. 1. TO BE REPLACED
  2. 2. Forward-Looking Statement Statement under the Private Securities Litigation Reform Act of 1995: This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward-looking statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include – but are not limited to – risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of any litigation, risks associated with completed and any possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-K for the most recent fiscal year and in our quarterly report on Form 10-Q for the most recent fiscal quarter. These documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  3. 3. Go Social! Salesforce Developers Salesforce Developers Salesforce Developers The video will be posted to YouTube & the webinar recap page (same URL as registration).This webinar is being recorded! @salesforcedevs / #forcewebinar
  4. 4. ▪ Don’t wait until the end to ask your question! – Technical support will answer questions starting now. ▪ Respect Q&A etiquette – Please don’t repeat questions. The support team is working their way down the queue. ▪ Stick around for live Q&A at the end – Speakers will tackle more questions at the end, time-allowing. ▪ Head to Developer Forums – More questions? Visit developer.salesforce.com/forums Have Questions?
  5. 5. Agenda 1. Advanced Apps for Lightning Experience 2. Lightning Component Architecture 3. Lightning Utility Bar 4. Designing for Performance
  6. 6. Advanced Apps for Lightning Experience
  7. 7. Let’s define the scope…  Native, built from the ground-up for Lightning Experience  Some functionality exposed in Salesforce1  Combines declarative and programmatic elements  Does not conform to 80% declarative / 20% programmatic  UX driven mostly by custom Lightning Components  Customised using declarative tools (e.g. App Builder, Metadata, Utility Bar)  Examples:  Significant customisation of Sales Cloud  Horizontal apps such as HR, Accounting  Vertical apps such as Insurance, Retail, Public Sector
  8. 8. What is an Advanced Lightning App?  Designed from the ground-up for Lightning Experience - Some functionality exposed in Salesforce1  Combines declarative and programmatic elements - Does not conform to 80% declarative / 20% programmatic - UX driven mostly by custom Lightning Components - Customised using declarative tools (e.g. App Builder, Metadata, Utility Bar)  Examples: - Significant customisation of Sales Cloud - Horizontal apps such as HR, Accounting - Vertical apps such as Real Estate, Insurance, Retail, Public Sector
  9. 9. How can I design this app?
  10. 10. Lightning toolkit Declarative Programmatic Lightning Apps Lightning Pages Lightning Utility Bar Lightning Actions Tabs + Metadata (Custom Objects, CMT) Data Model Security Model Standard Events Base/Standard Lightning Components Custom Lightning Components/Events Lightning Design System Lightning Data Service + Visualforce Apex/SOQL/SOSL/APIs
  11. 11. Lightning Component Architecture
  12. 12. Lightning Component Architecture Purpose Markup Comments Service Components Extended/used by other components Handle server calls Shared code base Minimal Extensible = true Helper Components Event interaction Metadata caching Minimal When applicable Building Block Components Implement UX functionality at different levels of granularity Base Lightning Components Lightning Design System Building Block Components/Content Majority of code Experience Components Available in App Builder / AppExchange for Components Building Block Components/Content Simple: Lightning Data Service Advanced: Dynamic if applicable Potentially metadata-driven
  13. 13. Lightning Components – Release Roadmap Release Theme Components Spring ‘17 Adding depth to single record foundational components Eg: avatar, inputSearch, inputSelect, picklist, inputRichText, tile, pill, modal and notification Summer ‘17 Introducing experience and databound components Eg: inputField, outputField, list, lookup
  14. 14. Service Component: Example <aura:component description=”ServiceComponent" extensible="true"> <div>{!v.body}</div> </aura:component> callToServer function: Parameters: Name of Apex @AuraEnabled Method Method Parameters Action properties: setAbortable() setStorable() + ignoreExisting setBackground() Fires $A.enqueueAction(), defines callback function Component Markup Client-side Helper
  15. 15. Service Component: Example <c:ServiceComponent/> <c:UtilityBarMenu/> UtilityBarController UtilityBarConfig__c <c:CardListView/> CardListViewController Account Opportunity Custom__c Apex + SOQL Dynamic Apex + SOQL extends c:serviceComponent extends c:serviceComponent
  16. 16. Example Experience Components
  17. 17. Designing a custom Experience Component
  18. 18. Dynamic, metadata-driven Components  Support your own use cases  When possible support any SObject  Maximise code reusability  Simplify component logic  Providing admins with a greater degree of flexibility…  ... while simplifying App Builder experience Field to filter on Standard actions available Lightning actions available Columns to display SOQL query Card List View title Number of rows Enable pagination Reference to metadata record Metadata: App Builder attributes:
  19. 19. Component Tree: custom Card List View <c:CardListView/> <c:Header/> <c:Table/> <c:Footer/> <c:GenericListView/> <c:TableData/> <c:OutputField/> <c:OutputField/> <c:OutputField/> <lightning:buttonMenu/> <lightning:buttonMenu/> <lightning:buttonMenu/> <lightning:(…)/><ui:(…)/> <c:Action/> <lightning:buttonGroup/> <c:Pagination/> App Builder Attributes (incl. Metadata reference) Which type of list view? Handle UI events What data to render? Which actions? Renders data and actions Record selection Render filters? Which mass actions? Display and fire mass actions Display and fire record-level actions Links e.g. Visualforce, Record Home Page Render pagination? Or link to list view? Display and fire pagination events Component event bubbles up, handled, pagination attributes updated
  20. 20. How do I fire platform actions?
  21. 21. Firing Platform Actions  Which actions to display? Metadata – pre-selected actions Display all available actions for SObject in specific context  Query PlatformAction object to obtain action type e.g.: Action Type Examples Implementation Standard Action View, Edit Fire createRecord, editRecord event Visualforce Action E-mail PDF CV Fire force:navigateToURL event Lightning Action Reject Candidate Display Modal, inject Lightning Component, pass appropriate parameters
  22. 22. Lightning Utility Bar
  23. 23. Utility Bar Overview  Always available  Unique per app  Flexipage containing a number of Lightning Components – Standard or custom  Customisable via UI (Spring ‘17)  Component Properties: Height + Width Icon + Label Background Load
  24. 24. Dynamic Content in the Utility Bar <c:UtilityBarMenu/> UtilityBarController UtilityBarConfig__c Menu Metadata Handles c:PageChanged events <c:CardListView/> <c:PageChanged/> Application Event On click Containing e.g. help button
  25. 25. Designing for Performance
  26. 26. SOQL Queries Limit  Typical of chatty custom Experience Components  Cause: Calls to server on init are aggregated into same Apex transaction  Mitigation: Use Lightning Data Service when possible Use cached data (for static data/metadata) Leverage Custom Metadata Types  Do not count against SOQL Limits Use setBackground() on calls to server  Calls processed separately, designed for lower priority calls but generally processed quickly Chain component loading by groups  Last component to load in a group fires application event to load 2nd group – and so on
  27. 27. Performance Best Practices  Enable Secure Cache and LockerService  Disable Lightning Components debugging  Use Lightning Data Service when possible  Lazy load when appropriate  Load data upon user intervention (e.g. click)  Pre-load when possible  Load data in background (especially static data)  Use setStorable() on calls to server  Local cache provides recent copy of data. Separate call to server takes place to obtain refreshed copy  Implement data store for metadata/data that remains static
  28. 28. Demo
  29. 29. New York City December 15, 2016 Join us at the Salesforce World Tour http://www.salesforce.com/events/worldtour/nyc/
  30. 30. Survey Your feedback is crucial to the success of our webinar programs. Thank you! http://bit.ly/BestLightning
  31. 31. Q & A Try Trailhead: trailhead.salesforce.com Join the conversation: @salesforcedevs
  32. 32. Thank You

×