Lightning ComponentをVisualforceページ内に表示できるapex:includeLightningを試してみました。

1. Lightning Applicationを作成
まず、Lightningアプリケーションを用意します。『extends="ltng:outApp"』を宣言することでVisualforceページで呼び出せるみたいです。『aura:dependency』には表示したいコンポーネントを指定します。今回は標準コンポーネントのui:buttonを表示してみます。
<aura:application access="GLOBAL" extends="ltng:outApp">
<aura:dependency resource="ui:button"/>
</aura:application>
2. Visualforce Pageを作成
extends="ltng:outApp"を宣言したLightningアプリケーションを用意できたらVisualforceページを作成します。
<apex:page showHeader="true" sidebar="false">
<apex:includeLightning />
<div id="vf-page">
<div id="lightningUiButton" />
</div>
<script type="text/javascript">
$Lightning.use("c:LightningOutSampleApp", function() {
$Lightning.createComponent("ui:button",
{ label : "Lightning UI Button Component" },
"lightningUiButton",
function(cmp) {
// do some stuff
});
});
</script>
</apex:page>
これでVisualforceページ内にLightningコンポーネントを表示することができました。
処理の概要
apex:includeLightning
これを宣言するとLightningComponentをVF内で表示するためのJSが利用できるみたいです。以前は次のように記述する必要がありました。
<!-- 以前の書き方 --> <apex:includeScript value="/lightning/lightning.out.js"/>
<div id="lightningUiButton" />
このdivタグがLightningComponentに置き換わります。
scriptタグ
最後のscriptタグの処理でVisualforceページ内にLightningComponentを表示するための処理を行っています。
- $Lightning.useタグ
- 『extends="ltng:outApp"』を宣言したLightningアプリケーションを指定します。
- $Lightning.createComponentタグ
- 表示したいコンポーネントを指定します。
- { label : "Lightning UI Button Component" }
- コンポーネントのパラメータを指定します。
- "lightningUiButton"
- LightningComponentに変換したいdivタグなどのIDを指定しています。
- function(cmp)
- 何か処理を実装できると思うのですが、確認できていません。
以上が、apex:includeLightningを利用したLightning ComponentをVisualforceページに表示する際の手順になります。
複数コンポーネントの表示
先ほど1つのコンポーネント表示を試してみましたが、これが複数だった場合どうすればいいか確認してみました。次のように記述すればいいみたいです。
Lightning Application

Visualforce Page

これで2つのコンポーネント表示を行うことができました。
開発したLightningComponentの埋め込み
上記ではSalesforceの標準コンポーネントを埋め込んでみました。最後に自分で開発したコンポーネントの埋め込みを試してみます。
Lightning Application

Visualforce Page

・・・表示されたことはされたのですが、Salesforceの標準スタイルに干渉してしまったみたいです。(背景の青色部分が白になったりしています。)標準コンポーネントのときには平気だったので開発で利用しているCSSが原因と思われます。
こちらLightning Experienceの画面では問題ありませんでした。
作りの問題かもしれませんが、従来のSalesforce画面での利用はあまり向いていないのではないかと思われます。
ちなみにSalesforce1モバイルアプリではどうなのかも確認してみました。
一応表示はされましたが、スタイルが崩れている感じです。Salesforce ClassicとSalesforce1 Mobileでの利用には向いていなさそうです。
apex:includeLightningの使い方はこんな感じでした。Lightning ExperienceのVisualforceページにちょっとしたコンポーネントを埋め込みたいときには便利そうです。