SlideShare a Scribd company logo
JavaScript-heavy
Salesforce Applications
David Meyer
Technical Architect, Appirio
dmeyer@appirio.com
Andrew Davis
Consultant, Appirio
adavis@appirio.com
The role of JavaScript in Salesforce
JS is the ‘last mile’ between Salesforce and users (it already powers much
of the Salesforce UI)
The relevance of JS continues to grow (Angular, node.js, mongoDB, etc.)
Salesforce continues to expand the options for using JavaScript (Lightning
Components, Lightning Experience)
Justifications: When to go JavaScript-heavy?
If you need a highly-customized and responsive UI
If you need/want to use JS Frameworks (Angular, Backbone, etc.)
To achieve tight integration with other JS tools or web services
To bypass Salesforce governor limits
To make more complex asynchronous calls than is possible with Apex
Sample uses of JavaScript in the AOL Support Console
​  Account info derived
from back-end systems
​  Dynamically-sourced
customer offers
​ Displaying information from backend systems using browser-based REST APIs

Recommended for you

Generically Call External Classes from Managed Packages
Generically Call External Classes from Managed PackagesGenerically Call External Classes from Managed Packages
Generically Call External Classes from Managed Packages

Do you want to learn how to build a completely generic interface architecture that can call any external class from within a managed package? Join us as we review an extension architecture that implements an interface to generically call external packages, plus methods in a target org that are unknown during base package build. You'll learn how to build dynamic and robust managed packages that can handle many unknowns, like different editions, custom objects or unknown sharing models.

salesforce.comsalesforce developersdreamforce
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)

Description In this webinar we will introduce you to Apex, and then walk you through the process of writing and deploying a basic trigger in your development environment. This series serves as an Introduction to Apex for Salesforce Administrators with no programming background. This is the first in a 3-part series with David Liu and LeeAnne Templeman. David Liu is the creator of sfdc99.com, an intro to Apex exercise guide for all Salesforce Admins. David is a self-taught Salesforce MVP who began his path as a marketer and is now the Salesforce Technical Architect for Google. He will share some of his own learning path, as well as tips and tricks on how to become a Salesforce developer. Key Takeaways See how quickly you can pick up the Force.com programming language and build triggers on your own! Learn what a test class is, and how to write, modify and deploy a basic trigger Understand when to use Apex and when to use core Salesforce tools like workflows and approvals Expand the automation capabilities in your Salesforce environment to increase adoption and data quality Understand core terms and development processes Series Targeted Audience: Salesforce Admins with experience developing point-and-click applications on the Force.com platform. Related Resources Apex Overview Page Apex Developer Guide Apex Workbook sfdc99.com Chapter 1: Write Your First Trigger from Start to Finish! Head First Java

salesforce developerssalesforce1 platformdeveloper
Gowtham_resume
Gowtham_resumeGowtham_resume
Gowtham_resume

This document contains a summary of Gowtham's experience as a software tester. He has over 6 years of experience in manual testing and is certified in software testing. He has worked on various projects testing web services, order management systems, and supply chain management applications. His skills include testing methodologies, techniques, tools like SOAP UI, Parasoft, and HP Quality Center. He is proficient in SQL and has experience automating test cases. He is looking for a new opportunity as a software tester.

​  Entirely custom
JavaScript applications
can be included in SFDC
​  … that draw data from
external systems
​  … and allow purchases
and other actions to be
performed on those
external systems
Sample uses of JavaScript in the AOL Support Console
​ Embedding entirely custom apps inside of Salesforce
Salesforce-JavaScript Interaction
Behind-the-scenes: Visualforce compiles down to HTML and JavaScript
Tools you can use:
• Remote Objects (JS data structures that mirror the SFDC database)
• Remote Actions (Defined in Apex, invoked from JS using JS callbacks)
• Action Methods (Action Functions, Action Support, Action Pollers)
• REST web services (Salesforce provides many and lets you write your own too)
• Lightning Components (learn more elsewhere)
• Tip: exchange complex objects between Apex and JS using JSON.de/serialize()
• Tip: overcome cross-org limitations by using JSONP or CORS-enabled services
Salesforce-JavaScript Interaction
How to pass control and data back and forth
JavaScript Concepts
Some core ideas to help Salesforce developers

Recommended for you

Salesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXSalesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DX

Hello Everyone ! "Salesforce Apex Hours" is a recurring event to talk about salesforce ! Some times we'd like to meet on one location and some time online. This time we are planning one online session on "Salesforce DX" with Jitendra Zaa (Salesforce MVP). Agenda :- Salesforce DX provides you with an integrated, end-to-end lifecycle designed for high-performance agile development. In this session we would go through hands on and see how Salesforce DX can be used to create scratch org, automated testing and data load purpose. We would discuss CLI option as well Force.com IDE • Introduction to Salesforce DX • Creating Scratch Org • Deploying metadata to Scratch Org • Creating Skeleton Workspace • Running Test classes • Getting Help • Using Force.com IDE with Salesforce DX • Q&A

salesforcedxfarmington hills salesforce developer groupsalesforce-dx
Intro to Apex Programmers
Intro to Apex ProgrammersIntro to Apex Programmers
Intro to Apex Programmers

If you are familiar with object-oriented languages like Java or C#, Apex may be the language you already almost know. Apex is the cloud-based programming language used on the Salesforce1 Platform to take your enterprise applications to the next level. In this webinar, get an introduction to how Apex is similar to other languages, how you can start coding in Apex with just a web browser, and an overview of the many functions Apex can perform for your applications and users. Key Takeaways Programmers familiar with object-oriented languages will be able to learn Apex easily Apex can perform a wide range of functions from serving as a controller for Visualforce pages to scheduled tasks in the background.

javaprogrammingapex
AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017

The document discusses an upcoming Salesforce developer conference in June 2017 with technical sessions, a keynote, and discounts available. It also provides information on enabling apps to work in the Lightning Experience, upcoming webinars on new Einstein Analytics features, and the Summer '17 release focusing on features for ISVs including improved Wave packaging templates, Salesforce DX entering open beta, the Apex Metadata API going GA, and the Lightning Data Service entering beta.

JavaScript Concepts
Most developers know some JavaScript
It’s worth getting to know it well!
What we’ll touch on:
• Object-oriented JavaScript (properties, methods, protoypes)
• Asynchronous JavaScript: (callbacks and promises)
• Variable scope in JavaScript (scope, closures, namespacing)
Selecting Elements in Visualforce Pages
The Id that Visualforce gave them when it renders your pageThe Id you gave to your elements
Try this method instead (this also works in CSS)These methods won’t work to select this element
Minimize use of global variables
Having all of your variables in the global scope is poor practice, makes debugging harder, and there are
950 global variables used in Salesforce that your variable names might conflict withIdeally, create a single global “namespace” object and make your code into its methods and properties
Group Related Variables into Objects
JSON.parse and JSON.stringify provide an elegant way to pass complex data

Recommended for you

Continuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releasesContinuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releases

The customer is an online manufacturing marketplace that connects buyers and sellers. They worked with Zado to automate testing of their complex platform using tools like Selenium, Maven, and Bamboo. Zado automated over 1,300 test cases in 30 weeks and helped enable continuous integration testing. After a successful 3 month evaluation, Zado became a trusted long-term QA partner.

test automationseleniumcontinuous integration. test cases
Summer '13 Developer Preview Webinar
Summer '13 Developer Preview WebinarSummer '13 Developer Preview Webinar
Summer '13 Developer Preview Webinar

Watch this webinar to discover new and updated Salesforce Platform features coming in the Summer '13 Release including: Force.com Canvas (GA) -- Force.com Canvas is now generally available and supports multiple canvases on a page, ability for canvases to talk to each other, distribution through standard packaging processes, and more. Chatter in Apex (GA) -- Chatter in Apex (formerly Connect in Apex) exposes Chatter API objects in Apex, and is now generally available with new classes and methods. The documentation can now be found in the Apex Developer’s Guide. Visualforce Updates -- There are several Visualforce enhancements including configurable timeout for JavaScript remoting, HTML5 output generation options, and various new components. API Updates -- Lots of API Updates including new objects, SOQL/SOSL clauses, and metadata types for easier deployments. ISVForce -- ISVForce has many new additions in Summer ‘13 including an Environment Hub for storing easily switching between orgs, installing/uninstalling packages with the API, and creating trialforce signups using the API.

developersdeveloper forceanalytics api
10 Principles of Apex Testing
10 Principles of Apex Testing10 Principles of Apex Testing
10 Principles of Apex Testing

Kevin Poorman presented 10 principles of Apex testing. The principles included using asserts to validate expected behavior, using StartTest and StopTest to reset limits, writing both positive and negative tests, testing with different user profiles and permission sets, generating own test data rather than using real data, using helper libraries to facilitate testing, mocking external services to enable unit testing, writing code in a testable way, and leveraging continuous integration to catch failing tests early. Continuous integration was said to help with multiple developers working in parallel and keeping aware of test coverage.

apex testingsalesforce.comsalesforce developers
Understanding Variable Scope and Closures
Promises and the jQuery Deferred Object
Deferred objects allow for concise and clear expression of how asynchronous requests should be handled
Debugging JavaScript using Chrome DevTools
Getting to know the capabilities of Chrome DevTools or Firebug is essential
Capabilities of DevTools:
• Inspect and modify HTML, CSS, JS, browser data
• Monitor network traffic and page rendering timeline
• Set breakpoints and step through JS execution
• Emulate devices and network speeds
• Profile and Audit your JavaScript and page loads
DevTools can give you complete visibility into every aspect of your JS
Unit Testing JavaScript on Salesforce
Setting up a unit testing framework and preparing your code

Recommended for you

Web based automation testing on Node.js environment
Web based automation testing on Node.js environmentWeb based automation testing on Node.js environment
Web based automation testing on Node.js environment

This document discusses web-based automation testing on Node.js. It covers unit testing frameworks like Mocha and Chai, the Selenium framework for browser automation, and Nightwatch which combines Selenium, Mocha and Chai. Nightwatch allows writing tests in a BDD style and executing them across different browsers. The document also discusses non-GUI testing with PhantomJS and integrating tests with Jenkins for continuous integration.

node.jsnightwatchautomation
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas

Join us to learn how to leverage SSO technologies (such as SAML) with Force.com Canvas. We'll show examples of using Canvas with your existing SSO application to provide a seamless user experience, how you can use Canvas and Salesforce Identity to demo cross-org Visualforce pages, and we'll show this behaving in Salesforce.

df14dreamforce
Advanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and VisualforceAdvanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and Visualforce

Are you a developer who thinks Visual Workflow (aka Flow) is just for Admins? Join us to learn how to use Apex code and Visualforce to strengthen your Flows, while making your Admin even more powerful. We'll cover how and when to use Flows in a Visualforce page, and how to manipulate events in both the Flow and Visualforce page/controller.

salesforce developersdf15salesforce
Unit testing JavaScript on Salesforce
Why unit test your JavaScript?
Setting up a unit testing stack: Node-Karma-Mocha-Chai (locally or in CI)
Preparing your code:
• Try to move all of your JS into static resources (this can also speed page load)
• But {!controllerBindings} need to stay on the Visualforce page
• Make sure your code is testable:
• Testable methods need to be globally-accessible
• Emphasize discrete, independent functions that don’t depend on global values
Write unit tests using Mocha and Chai syntax with Sinon for stubs/mocks
Sample Unit Testing Stack
For installing
dependenciesPlatform
Test Runner
(Creates a web server)
Assertion Syntax
assert.typeOf(foo, 'string');
assert.equal(foo, 'bar');
assert.lengthOf(foo, 3);
Mocks & Stubs
var callback = sinon.stub();
callback.withArgs(42).returns(1);
callback.withArgs(1).throws("TypeError");
Testing & Reporting
(The core test framework)
describe('testFn Suite', function () {
it('should return true', function () {
assert.equal(true, testFn() );
});
});
Unit testing stack setup (on your machine)
1.  Install Node.js on your development machine(s).
2.  Grab our code at goo.gl/fMFrm1 (github.com/abd3/DF15-JS-Heavy-Salesforce)
3.  Copy these files from our sample project into yours and customize as needed:
a.  /package.json - Node.js will use this to get all the packages you need
b.  /karma.conf.js - The configuration file for Karma (which files to test, etc.)
c.  /test/* - The actual unit tests used in our sample project
4.  In the root of your development directory (where package.json is installed) run
the following one-time installation command from the command line:
npm install
5.  Run the following code from the command-line every time you want to start the
karma test runner:
./node_modules/karma/bin/karma start karma.conf.js
6.  autowatch = true in our sample configuration file, so Karma will re-run all the unit
tests each time you save a change to one of the files being tested.
Unit Test FilesSalesforce Files
Anatomy of a JavaScript Unit Test
Salesforce Files
Unit Test Files
Similar Unit Tests can be Grouped
Salesforce Files
Setup & Tear-down steps
Actual Unit Tests

Recommended for you

Build Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DXBuild Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DX

This document describes a pilot program for continuous integration with Salesforce DX. It discusses pain points with the current development process and how Salesforce DX aims to improve the developer experience. Key benefits of Salesforce DX include faster development cycles through features like scratch orgs and metadata deployment automation. The document provides an overview of Salesforce DX principles and development flow, and demonstrates how to set up continuous integration with Jenkins.

salesforce dx continuous delivery
Building Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime APIBuilding Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime API

Flow enables developers and admins to easily automate complex processes and execute custom logic with clicks, not code. But you can also manipulate flows programmatically via the Metadata, Tooling and and, as of the Winter 16' release REST API - Flow Runtime. Join us to learn from the engineers who built the API how to manipulate flow with the API. See examples of how this empowers you to build better applications for your customers.

salesforcesalesforce developersdf15
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time

The document discusses how Force.com developers can build RESTful backends faster using the Force.com platform. It describes building a "Meet Up" app with REST endpoints for events, attendees, and complex queries in under an hour. Key advantages are its immediate live availability on the web, ability to handle large loads, and built-in security. While other platforms may be able to achieve the same, Force.com allows doing so more quickly through its low code development capabilities and deployment speed.

rest web servicesdf12salesforce.com
Setup & Tear-down steps
Setup & Tear-down steps
Anatomy of a JavaScript Unit Test
Actual Unit Tests
Anatomy of a JavaScript Unit Test
Karma’s unit testing interface
Command-line or web-based
Browser-based test runner
The command-line test runner auto-runs when files change
Karma’s code coverage report (karma-junit-reporter style)
This shows aggregate and line-by-line unit test coverage on the project
Aggregate code-coverage for the project
Line-by-line code coverage

Recommended for you

Get Started with Salesforce DX!
Get Started with Salesforce DX!Get Started with Salesforce DX!
Get Started with Salesforce DX!

This document contains a forward-looking statement regarding potential risks and uncertainties in salesforce.com's financial results. It notes that actual results may differ from projections due to various risks including issues with new products, services, business models, mergers and acquisitions. The statement also notes that unreleased features mentioned may not be delivered on time or at all, and customers should only make purchase decisions based on currently available features. The document encourages reviewing salesforce.com's SEC filings for more details on potential risk factors.

salesforce dxcodingdevelopers
Lightning Components Explained
Lightning Components ExplainedLightning Components Explained
Lightning Components Explained

Learn about the Lightning Components Framework which helps you develop component based apps which are compatible with Salesforce1 and Lightning Experience. This presentation was presented at the New Delhi Salesforce DG and #SalesforceSaturday session on 23rd April, 2016 in New Delhi.

salesforcesaturdaylightning componentslightning
Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript

JavaOne presentation looking at the different tools available to JavaScript developers for debugging, performance and deployment

Unit testing stack (for Continuous Integration)
​ General guidelines for including JS unit testing in your CI builds:
•  Set up a separate build step for the JS unit testing
•  Install the nodejs plugin for Jenkins and specify your version of node & npm
•  The build step consists simply of running this shell command:
npm install
node_modules/karma/bin/karma start karma.conf.js --single-run
•  The build step will succeed or fail based on the results of that command
•  This will also output some reports in the /reports folder that can be ingested to
report on code coverage, code quality, etc. if you’re using code quality tools
​  Build step for JS code
quality analysis in
SonarQube
JavaScript Unit Testing as a Continuous Deployment Step
​ JS unit testing can be one step in a CI/CD setup
​  Build step to run
JavaScript unit tests
Jenkins build step to
deploy to a QA org. This
also runs Apex unit tests
Karma outputs, displayed in SonarQube
Karma’s unit testing output can be ingested and displayed in other products
Questions & Answers
Grab the code at goo.gl/fMFrm1
(https://github.com/abd3/DF15-JS-Heavy-Salesforce)

Recommended for you

Netserv Software Testing
Netserv Software TestingNetserv Software Testing
Netserv Software Testing

The acute software testing process, tools we use and tools we\'ve developed. We test with both open source and licensed-based products, such as Selenium and Mercury.

AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)

This mid-level technical session will help you choose among the AWS services that can help you deploy and run your applications more easily. You will learn how to get an application running using AWS OpsWorks and AWS Elastic Beanstalk and how to use AWS CloudFormation templates to document, version control, and share your application configuration

awssummitlondon2014opsworkscloud computing
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS

The document provides an overview of AngularJS including its history, key concepts, and features. Some of the main points covered include: - AngularJS was created in 2009 and is an open-source JavaScript framework maintained by Google. - It uses HTML enhanced with directives and bindings to create single-page applications. Core concepts include MVC, templates, dependency injection, and two-way data binding. - Templates define the UI using directives, expressions, and filters. Scopes provide the model and propagate events. Modules organize the app into components. - Services can be used to share code across the app using dependency injection. Common services include $http, $log, filters and more

angularjsjavascript
Share Your Feedback, and Win a GoPro!
3
Earn a GoPro prize entry for
each completed survey
Tap the bell to take a
survey2Enroll in a session1
Thank you
Salesforce - JavaScript Integration Methods
Note that you can mix and match any combination of these as needed
Action Methods
JavaScript
Remoting
Remote Objects
Salesforce
REST API
Require
Controller Code
yes yes no no
Require
Visualforce
yes yes yes no
Have their own
Governor Limits
no no no yes
Main Benefit
Call static or
instance methods
while maintaining
controller state
Call static Apex
methods quickly and
efficiently
Create a JS version
of Salesforce object
with CRUD access
Perform Salesforce
actions and modify
data from external
apps
Main
Disadvantage
Submits form data;
slower
Limited to static
methods
Can’t execute
custom Apex from
VF this way

More Related Content

What's hot

Salesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep DiveSalesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep Dive
Salesforce Developers
 
Apex for Admins: Beyond the Basics
Apex for Admins: Beyond the BasicsApex for Admins: Beyond the Basics
Apex for Admins: Beyond the Basics
Salesforce Developers
 
Restful services with ColdFusion
Restful services with ColdFusionRestful services with ColdFusion
Restful services with ColdFusion
ColdFusionConference
 
Generically Call External Classes from Managed Packages
Generically Call External Classes from Managed PackagesGenerically Call External Classes from Managed Packages
Generically Call External Classes from Managed Packages
Salesforce Developers
 
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Salesforce Developers
 
Gowtham_resume
Gowtham_resumeGowtham_resume
Gowtham_resume
Gowtham Venkateshan
 
Salesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXSalesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DX
Amit Chaudhary
 
Intro to Apex Programmers
Intro to Apex ProgrammersIntro to Apex Programmers
Intro to Apex Programmers
Salesforce Developers
 
AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017
Salesforce Partners
 
Continuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releasesContinuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releases
Zado Technologies
 
Summer '13 Developer Preview Webinar
Summer '13 Developer Preview WebinarSummer '13 Developer Preview Webinar
Summer '13 Developer Preview Webinar
Salesforce Developers
 
10 Principles of Apex Testing
10 Principles of Apex Testing10 Principles of Apex Testing
10 Principles of Apex Testing
Salesforce Developers
 
Web based automation testing on Node.js environment
Web based automation testing on Node.js environmentWeb based automation testing on Node.js environment
Web based automation testing on Node.js environment
Yu-Lin Huang
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas
Salesforce Developers
 
Advanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and VisualforceAdvanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and Visualforce
Salesforce Developers
 
Build Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DXBuild Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DX
Lynette Lim
 
Building Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime APIBuilding Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime API
Salesforce Developers
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time
Abhinav Gupta
 
Get Started with Salesforce DX!
Get Started with Salesforce DX!Get Started with Salesforce DX!
Get Started with Salesforce DX!
Salesforce Developers
 
Lightning Components Explained
Lightning Components ExplainedLightning Components Explained
Lightning Components Explained
Atul Gupta(8X)
 

What's hot (20)

Salesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep DiveSalesforce.com API Series: Service Cloud Console Deep Dive
Salesforce.com API Series: Service Cloud Console Deep Dive
 
Apex for Admins: Beyond the Basics
Apex for Admins: Beyond the BasicsApex for Admins: Beyond the Basics
Apex for Admins: Beyond the Basics
 
Restful services with ColdFusion
Restful services with ColdFusionRestful services with ColdFusion
Restful services with ColdFusion
 
Generically Call External Classes from Managed Packages
Generically Call External Classes from Managed PackagesGenerically Call External Classes from Managed Packages
Generically Call External Classes from Managed Packages
 
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
Apex for Admins: Get Started with Apex in 30 Minutes! (part 1)
 
Gowtham_resume
Gowtham_resumeGowtham_resume
Gowtham_resume
 
Salesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DXSalesforce Apex Hours:- Salesforce DX
Salesforce Apex Hours:- Salesforce DX
 
Intro to Apex Programmers
Intro to Apex ProgrammersIntro to Apex Programmers
Intro to Apex Programmers
 
AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017AppExchange Tech Enablement June 2017
AppExchange Tech Enablement June 2017
 
Continuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releasesContinuous integration testing for automation needs and quality of the releases
Continuous integration testing for automation needs and quality of the releases
 
Summer '13 Developer Preview Webinar
Summer '13 Developer Preview WebinarSummer '13 Developer Preview Webinar
Summer '13 Developer Preview Webinar
 
10 Principles of Apex Testing
10 Principles of Apex Testing10 Principles of Apex Testing
10 Principles of Apex Testing
 
Web based automation testing on Node.js environment
Web based automation testing on Node.js environmentWeb based automation testing on Node.js environment
Web based automation testing on Node.js environment
 
Seamless Authentication with Force.com Canvas
Seamless Authentication with Force.com CanvasSeamless Authentication with Force.com Canvas
Seamless Authentication with Force.com Canvas
 
Advanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and VisualforceAdvanced Flow Techniques with Apex and Visualforce
Advanced Flow Techniques with Apex and Visualforce
 
Build Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DXBuild Together And Deliver Continuously With Salesforce DX
Build Together And Deliver Continuously With Salesforce DX
 
Building Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime APIBuilding Dynamic UI with Visual Workflow Runtime API
Building Dynamic UI with Visual Workflow Runtime API
 
How Force.com developers do more in less time
How Force.com developers do more in less timeHow Force.com developers do more in less time
How Force.com developers do more in less time
 
Get Started with Salesforce DX!
Get Started with Salesforce DX!Get Started with Salesforce DX!
Get Started with Salesforce DX!
 
Lightning Components Explained
Lightning Components ExplainedLightning Components Explained
Lightning Components Explained
 

Similar to Javascript-heavy Salesforce Applications

Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
davejohnson
 
Netserv Software Testing
Netserv Software TestingNetserv Software Testing
Netserv Software Testing
sthicks14
 
AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)
Amazon Web Services
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
Yoann Gotthilf
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
Steve Lange
 
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docxBroncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
curwenmichaela
 
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docxBroncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
hartrobert670
 
RAHUL_Updated( (2)
RAHUL_Updated( (2)RAHUL_Updated( (2)
RAHUL_Updated( (2)
Rahul Singh
 
RubaDevi_Salesforce
RubaDevi_SalesforceRubaDevi_Salesforce
RubaDevi_Salesforce
Ruba Devi Thirugnanam
 
Unit Testing and Coverage for AngularJS
Unit Testing and Coverage for AngularJSUnit Testing and Coverage for AngularJS
Unit Testing and Coverage for AngularJS
Knoldus Inc.
 
iks auf der ElipseCon 2011: Tickling the shoulders of giants
iks auf der ElipseCon 2011: Tickling the shoulders of giantsiks auf der ElipseCon 2011: Tickling the shoulders of giants
iks auf der ElipseCon 2011: Tickling the shoulders of giants
IKS Gesellschaft für Informations- und Kommunikationssysteme mbH
 
Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...
Rachid Kherrazi
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
Agile Testing Alliance
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
Billie Berzinskas
 
Microservice Automated Testing on Kubernetes
Microservice Automated Testing on KubernetesMicroservice Automated Testing on Kubernetes
Microservice Automated Testing on Kubernetes
Shane Galvin
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Bharath Kesana Selinium Automation Tester
Bharath Kesana Selinium Automation TesterBharath Kesana Selinium Automation Tester
Bharath Kesana Selinium Automation Tester
Bharath Kesana
 
Presentation - Course about JavaFX
Presentation - Course about JavaFXPresentation - Course about JavaFX
Presentation - Course about JavaFX
Tom Mix Petreca
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
Nalin Goonawardana
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
Troy Miles
 

Similar to Javascript-heavy Salesforce Applications (20)

Pragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScriptPragmatic Parallels: Java and JavaScript
Pragmatic Parallels: Java and JavaScript
 
Netserv Software Testing
Netserv Software TestingNetserv Software Testing
Netserv Software Testing
 
AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)AWS Summit London 2014 | Deployment Done Right (300)
AWS Summit London 2014 | Deployment Done Right (300)
 
Introduction to AngularJS
Introduction to AngularJSIntroduction to AngularJS
Introduction to AngularJS
 
Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)Whats New In 2010 (Msdn & Visual Studio)
Whats New In 2010 (Msdn & Visual Studio)
 
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docxBroncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
 
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docxBroncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
Broncosbuild.xmlBuilds, tests, and runs the project Broncos..docx
 
RAHUL_Updated( (2)
RAHUL_Updated( (2)RAHUL_Updated( (2)
RAHUL_Updated( (2)
 
RubaDevi_Salesforce
RubaDevi_SalesforceRubaDevi_Salesforce
RubaDevi_Salesforce
 
Unit Testing and Coverage for AngularJS
Unit Testing and Coverage for AngularJSUnit Testing and Coverage for AngularJS
Unit Testing and Coverage for AngularJS
 
iks auf der ElipseCon 2011: Tickling the shoulders of giants
iks auf der ElipseCon 2011: Tickling the shoulders of giantsiks auf der ElipseCon 2011: Tickling the shoulders of giants
iks auf der ElipseCon 2011: Tickling the shoulders of giants
 
Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...Quest to the best test automation for low code development platform kherrazi ...
Quest to the best test automation for low code development platform kherrazi ...
 
Session on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh GundechaSession on Selenium Powertools by Unmesh Gundecha
Session on Selenium Powertools by Unmesh Gundecha
 
Coldbox developer training – session 4
Coldbox developer training – session 4Coldbox developer training – session 4
Coldbox developer training – session 4
 
Microservice Automated Testing on Kubernetes
Microservice Automated Testing on KubernetesMicroservice Automated Testing on Kubernetes
Microservice Automated Testing on Kubernetes
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Bharath Kesana Selinium Automation Tester
Bharath Kesana Selinium Automation TesterBharath Kesana Selinium Automation Tester
Bharath Kesana Selinium Automation Tester
 
Presentation - Course about JavaFX
Presentation - Course about JavaFXPresentation - Course about JavaFX
Presentation - Course about JavaFX
 
Behavior Driven Development by Example
Behavior Driven Development by ExampleBehavior Driven Development by Example
Behavior Driven Development by Example
 
Ionic framework one day training
Ionic framework one day trainingIonic framework one day training
Ionic framework one day training
 

More from Salesforce Developers

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Salesforce Developers
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
Salesforce Developers
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
Salesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
Salesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
Salesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
Salesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
Salesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
Salesforce Developers
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
Salesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
Salesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
Salesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
Salesforce Developers
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
Salesforce Developers
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
Salesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 

More from Salesforce Developers (20)

Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce DevelopersSample Gallery: Reference Code and Best Practices for Salesforce Developers
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component PerformanceMaximizing Salesforce Lightning Experience and Lightning Component Performance
Maximizing Salesforce Lightning Experience and Lightning Component Performance
 
Local development with Open Source Base Components
Local development with Open Source Base ComponentsLocal development with Open Source Base Components
Local development with Open Source Base Components
 
TrailheaDX India : Developer Highlights
TrailheaDX India : Developer HighlightsTrailheaDX India : Developer Highlights
TrailheaDX India : Developer Highlights
 
Why developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX IndiaWhy developers shouldn’t miss TrailheaDX India
Why developers shouldn’t miss TrailheaDX India
 
CodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local DevelopmentCodeLive: Build Lightning Web Components faster with Local Development
CodeLive: Build Lightning Web Components faster with Local Development
 
CodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web ComponentsCodeLive: Converting Aura Components to Lightning Web Components
CodeLive: Converting Aura Components to Lightning Web Components
 
Enterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web ComponentsEnterprise-grade UI with open source Lightning Web Components
Enterprise-grade UI with open source Lightning Web Components
 
TrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer HighlightsTrailheaDX and Summer '19: Developer Highlights
TrailheaDX and Summer '19: Developer Highlights
 
Live coding with LWC
Live coding with LWCLive coding with LWC
Live coding with LWC
 
Lightning web components - Episode 4 : Security and Testing
Lightning web components  - Episode 4 : Security and TestingLightning web components  - Episode 4 : Security and Testing
Lightning web components - Episode 4 : Security and Testing
 
LWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura InteroperabilityLWC Episode 3- Component Communication and Aura Interoperability
LWC Episode 3- Component Communication and Aura Interoperability
 
Lightning web components episode 2- work with salesforce data
Lightning web components   episode 2- work with salesforce dataLightning web components   episode 2- work with salesforce data
Lightning web components episode 2- work with salesforce data
 
Lightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An IntroductionLightning web components - Episode 1 - An Introduction
Lightning web components - Episode 1 - An Introduction
 
Migrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCPMigrating CPQ to Advanced Calculator and JSQCP
Migrating CPQ to Advanced Calculator and JSQCP
 
Scale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in SalesforceScale with Large Data Volumes and Big Objects in Salesforce
Scale with Large Data Volumes and Big Objects in Salesforce
 
Replicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data CaptureReplicate Salesforce Data in Real Time with Change Data Capture
Replicate Salesforce Data in Real Time with Change Data Capture
 
Modern Development with Salesforce DX
Modern Development with Salesforce DXModern Development with Salesforce DX
Modern Development with Salesforce DX
 
Get Into Lightning Flow Development
Get Into Lightning Flow DevelopmentGet Into Lightning Flow Development
Get Into Lightning Flow Development
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS ConnectIntegrate CMS Content Into Lightning Communities with CMS Connect
Integrate CMS Content Into Lightning Communities with CMS Connect
 

Recently uploaded

Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
RaminGhanbari2
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
Bert Blevins
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Bert Blevins
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
Neo4j
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Bert Blevins
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
Andrey Yasko
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
Kief Morris
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
Matthew Sinclair
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
ArgaBisma
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
welrejdoall
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
Matthew Sinclair
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
HackersList
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
SynapseIndia
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 

Recently uploaded (20)

Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyyActive Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
Active Inference is a veryyyyyyyyyyyyyyyyyyyyyyyy
 
Password Rotation in 2024 is still Relevant
Password Rotation in 2024 is still RelevantPassword Rotation in 2024 is still Relevant
Password Rotation in 2024 is still Relevant
 
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly DetectionAdvanced Techniques for Cyber Security Analysis and Anomaly Detection
Advanced Techniques for Cyber Security Analysis and Anomaly Detection
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdfBT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
BT & Neo4j: Knowledge Graphs for Critical Enterprise Systems.pptx.pdf
 
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
Understanding Insider Security Threats: Types, Examples, Effects, and Mitigat...
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Comparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdfComparison Table of DiskWarrior Alternatives.pdf
Comparison Table of DiskWarrior Alternatives.pdf
 
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
[Talk] Moving Beyond Spaghetti Infrastructure [AOTB] 2024-07-04.pdf
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
20240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 202420240704 QFM023 Engineering Leadership Reading List June 2024
20240704 QFM023 Engineering Leadership Reading List June 2024
 
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdfWhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
WhatsApp Image 2024-03-27 at 08.19.52_bfd93109.pdf
 
Manual | Product | Research Presentation
Manual | Product | Research PresentationManual | Product | Research Presentation
Manual | Product | Research Presentation
 
Pigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdfPigging Solutions Sustainability brochure.pdf
Pigging Solutions Sustainability brochure.pdf
 
20240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 202420240702 QFM021 Machine Intelligence Reading List June 2024
20240702 QFM021 Machine Intelligence Reading List June 2024
 
How Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdfHow Social Media Hackers Help You to See Your Wife's Message.pdf
How Social Media Hackers Help You to See Your Wife's Message.pdf
 
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptxRPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
RPA In Healthcare Benefits, Use Case, Trend And Challenges 2024.pptx
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 

Javascript-heavy Salesforce Applications

  • 1. JavaScript-heavy Salesforce Applications David Meyer Technical Architect, Appirio dmeyer@appirio.com Andrew Davis Consultant, Appirio adavis@appirio.com
  • 2. The role of JavaScript in Salesforce JS is the ‘last mile’ between Salesforce and users (it already powers much of the Salesforce UI) The relevance of JS continues to grow (Angular, node.js, mongoDB, etc.) Salesforce continues to expand the options for using JavaScript (Lightning Components, Lightning Experience)
  • 3. Justifications: When to go JavaScript-heavy? If you need a highly-customized and responsive UI If you need/want to use JS Frameworks (Angular, Backbone, etc.) To achieve tight integration with other JS tools or web services To bypass Salesforce governor limits To make more complex asynchronous calls than is possible with Apex
  • 4. Sample uses of JavaScript in the AOL Support Console ​  Account info derived from back-end systems ​  Dynamically-sourced customer offers ​ Displaying information from backend systems using browser-based REST APIs
  • 5. ​  Entirely custom JavaScript applications can be included in SFDC ​  … that draw data from external systems ​  … and allow purchases and other actions to be performed on those external systems Sample uses of JavaScript in the AOL Support Console ​ Embedding entirely custom apps inside of Salesforce
  • 6. Salesforce-JavaScript Interaction Behind-the-scenes: Visualforce compiles down to HTML and JavaScript Tools you can use: • Remote Objects (JS data structures that mirror the SFDC database) • Remote Actions (Defined in Apex, invoked from JS using JS callbacks) • Action Methods (Action Functions, Action Support, Action Pollers) • REST web services (Salesforce provides many and lets you write your own too) • Lightning Components (learn more elsewhere) • Tip: exchange complex objects between Apex and JS using JSON.de/serialize() • Tip: overcome cross-org limitations by using JSONP or CORS-enabled services
  • 7. Salesforce-JavaScript Interaction How to pass control and data back and forth
  • 8. JavaScript Concepts Some core ideas to help Salesforce developers
  • 9. JavaScript Concepts Most developers know some JavaScript It’s worth getting to know it well! What we’ll touch on: • Object-oriented JavaScript (properties, methods, protoypes) • Asynchronous JavaScript: (callbacks and promises) • Variable scope in JavaScript (scope, closures, namespacing)
  • 10. Selecting Elements in Visualforce Pages The Id that Visualforce gave them when it renders your pageThe Id you gave to your elements Try this method instead (this also works in CSS)These methods won’t work to select this element
  • 11. Minimize use of global variables Having all of your variables in the global scope is poor practice, makes debugging harder, and there are 950 global variables used in Salesforce that your variable names might conflict withIdeally, create a single global “namespace” object and make your code into its methods and properties
  • 12. Group Related Variables into Objects JSON.parse and JSON.stringify provide an elegant way to pass complex data
  • 14. Promises and the jQuery Deferred Object Deferred objects allow for concise and clear expression of how asynchronous requests should be handled
  • 15. Debugging JavaScript using Chrome DevTools Getting to know the capabilities of Chrome DevTools or Firebug is essential Capabilities of DevTools: • Inspect and modify HTML, CSS, JS, browser data • Monitor network traffic and page rendering timeline • Set breakpoints and step through JS execution • Emulate devices and network speeds • Profile and Audit your JavaScript and page loads DevTools can give you complete visibility into every aspect of your JS
  • 16. Unit Testing JavaScript on Salesforce Setting up a unit testing framework and preparing your code
  • 17. Unit testing JavaScript on Salesforce Why unit test your JavaScript? Setting up a unit testing stack: Node-Karma-Mocha-Chai (locally or in CI) Preparing your code: • Try to move all of your JS into static resources (this can also speed page load) • But {!controllerBindings} need to stay on the Visualforce page • Make sure your code is testable: • Testable methods need to be globally-accessible • Emphasize discrete, independent functions that don’t depend on global values Write unit tests using Mocha and Chai syntax with Sinon for stubs/mocks
  • 18. Sample Unit Testing Stack For installing dependenciesPlatform Test Runner (Creates a web server) Assertion Syntax assert.typeOf(foo, 'string'); assert.equal(foo, 'bar'); assert.lengthOf(foo, 3); Mocks & Stubs var callback = sinon.stub(); callback.withArgs(42).returns(1); callback.withArgs(1).throws("TypeError"); Testing & Reporting (The core test framework) describe('testFn Suite', function () { it('should return true', function () { assert.equal(true, testFn() ); }); });
  • 19. Unit testing stack setup (on your machine) 1.  Install Node.js on your development machine(s). 2.  Grab our code at goo.gl/fMFrm1 (github.com/abd3/DF15-JS-Heavy-Salesforce) 3.  Copy these files from our sample project into yours and customize as needed: a.  /package.json - Node.js will use this to get all the packages you need b.  /karma.conf.js - The configuration file for Karma (which files to test, etc.) c.  /test/* - The actual unit tests used in our sample project 4.  In the root of your development directory (where package.json is installed) run the following one-time installation command from the command line: npm install 5.  Run the following code from the command-line every time you want to start the karma test runner: ./node_modules/karma/bin/karma start karma.conf.js 6.  autowatch = true in our sample configuration file, so Karma will re-run all the unit tests each time you save a change to one of the files being tested.
  • 20. Unit Test FilesSalesforce Files Anatomy of a JavaScript Unit Test Salesforce Files Unit Test Files Similar Unit Tests can be Grouped Salesforce Files Setup & Tear-down steps Actual Unit Tests
  • 21. Setup & Tear-down steps Setup & Tear-down steps Anatomy of a JavaScript Unit Test
  • 22. Actual Unit Tests Anatomy of a JavaScript Unit Test
  • 23. Karma’s unit testing interface Command-line or web-based Browser-based test runner The command-line test runner auto-runs when files change
  • 24. Karma’s code coverage report (karma-junit-reporter style) This shows aggregate and line-by-line unit test coverage on the project Aggregate code-coverage for the project Line-by-line code coverage
  • 25. Unit testing stack (for Continuous Integration) ​ General guidelines for including JS unit testing in your CI builds: •  Set up a separate build step for the JS unit testing •  Install the nodejs plugin for Jenkins and specify your version of node & npm •  The build step consists simply of running this shell command: npm install node_modules/karma/bin/karma start karma.conf.js --single-run •  The build step will succeed or fail based on the results of that command •  This will also output some reports in the /reports folder that can be ingested to report on code coverage, code quality, etc. if you’re using code quality tools
  • 26. ​  Build step for JS code quality analysis in SonarQube JavaScript Unit Testing as a Continuous Deployment Step ​ JS unit testing can be one step in a CI/CD setup ​  Build step to run JavaScript unit tests Jenkins build step to deploy to a QA org. This also runs Apex unit tests
  • 27. Karma outputs, displayed in SonarQube Karma’s unit testing output can be ingested and displayed in other products
  • 28. Questions & Answers Grab the code at goo.gl/fMFrm1 (https://github.com/abd3/DF15-JS-Heavy-Salesforce)
  • 29. Share Your Feedback, and Win a GoPro! 3 Earn a GoPro prize entry for each completed survey Tap the bell to take a survey2Enroll in a session1
  • 31. Salesforce - JavaScript Integration Methods Note that you can mix and match any combination of these as needed Action Methods JavaScript Remoting Remote Objects Salesforce REST API Require Controller Code yes yes no no Require Visualforce yes yes yes no Have their own Governor Limits no no no yes Main Benefit Call static or instance methods while maintaining controller state Call static Apex methods quickly and efficiently Create a JS version of Salesforce object with CRUD access Perform Salesforce actions and modify data from external apps Main Disadvantage Submits form data; slower Limited to static methods Can’t execute custom Apex from VF this way