Newer Version Available
Use Lightning Components in Visualforce Pages
- Add the Lightning Components for Visualforce JavaScript library to your Visualforce page using the <apex:includeLightning/> component.
- Create and reference a Lightning app that declares your component dependencies.
- Write a JavaScript function that creates the component on the page using $Lightning.createComponent().
Add the Lightning Components for Visualforce JavaScript Library
Add <apex:includeLightning/> at the beginning of your page. This component loads the JavaScript file used by Lightning Components for Visualforce.
Create and Reference a Lightning Dependency App
To use Lightning Components for Visualforce, define component dependencies by referencing a Lightning dependency app. This app is globally accessible and extends ltng:outApp. The app declares dependencies on any Lightning definitions (like components) that it uses.
1<aura:application access="GLOBAL" extends="ltng:outApp">
2 <aura:dependency resource="lightning:button"/>
3</aura:application>1$Lightning.use("theNamespace:lcvfTest", function() {});For further details about creating a Lightning dependency app, see Lightning Out Dependencies.
Creating a Component on a Page
Finally, add your top-level component to a page using $Lightning.createComponent(String type, Object attributes, String domLocator, function callback). This function is similar to $A.createComponent(), but includes an additional parameter, domLocator, which specifies the DOM element where you want the component inserted.
1<apex:page>
2 <apex:includeLightning />
3
4 <div id="lightning" />
5
6 <script>
7 $Lightning.use("c:lcvfTest", function() {
8 $Lightning.createComponent("lightning:button",
9 { label : "Press Me!" },
10 "lightning",
11 function(cmp) {
12 console.log("button was created");
13 // do some stuff
14 }
15 );
16 });
17 </script>
18</apex:page>The $Lightning.createComponent() call creates a button with a “Press Me!” label. The button is inserted in a DOM element with the ID “lightning”. After the button is added and active on the page, the callback function is invoked and executes a console.log() statement. The callback receives the component created as its only argument. In this simple example, the button isn't configured to do anything.
For further details about using $Lightning.use() and $Lightning.createComponent(), see Lightning Out Markup.
Limitations
If a Visualforce page contains an Aura component, you can’t render the Visualforce page as a PDF.
Browser Third-Party Cookies
Lightning components set cookies in a user’s browser. Since Lightning components and Visualforce are served from different domains, those cookies are “third-party” cookies. Your users need to allow third-party cookies in their browser settings. For more details, including the requirement to disable the Prevent cross-site tracking setting in Safari, see Lightning Out Requirements.