LightningコンポーネントとVisualforce、どちらを使うべき?
簡単に言うと、答えは「両方!」
理由は:
Visualforce: 既存の Visualforce アプリケーションを変換する必要はありませんし、Visualforce を使用したアプリケーションの作成をやめる必要もありません。
Lightning: モバイルデバイス上で適切に動作するように特別に最適化されています。
区別:
Visualforce:ページ中心 、< Apex:XXXX>Salesforceサーバ実行
Lightning:アプリケーション中心、<Lightning:XXXX>クライアント実行
Visualforce | JavaScriptアプリケーション コンテナVisualforce |
Lightning | |
---|---|---|---|
画面描く | サーバに作成 htmlクライアントに戻る |
サーバから空白VFPage戻る クライアントにJavaScript呼び出し作成 |
クライアントにJavaScript呼び出し作成 |
データ ビジネスロジック |
Apex 標準または カスタムコントローラ |
リモートオブジェクトまたは JavaScript Remoting、Apex コントローラ |
Lightning データサービス、Apex |
処理流れ | ブラウザから請求⇒ サーバで実行、返送⇒ ブラウザに請求結果表示 |
ブラウザから請求(JS含む空ページ)⇒ ページ返送⇒ ブラウザがJS読み込む⇒ ブラウザに画面作成 |
ブラウザから請求(アプリまたコンポーネント)⇒ サーバからアプリまたコンポーネントバンドル返送⇒ ブラウザがバンドル読み込む⇒ JSアプリが画面作成 |
メリット | 検証済 実装し易い アプリ-ページ構成し易い メタデータ既に組み込んでいる |
高度にインタラクティブと 没入型体験がある |
高度にインタラクティブと没入型体験がある ユーザインターフェース戦略と連携する メタデータ基に構築、開発スビートアップ |
デメリット | インタラクティブな操作制限 モバイルパフォーマンス |
複雑 メタデータが組み込んでいない 開発環境がない |
- |
選択例
要件 | 推奨 |
---|---|
Lightning Experienceプラットフォーム向け | LightningコンポーネントとLightning Experience用Visualforce |
モバイル向けアプリケーション開発 | Lightningコンポーネント (Lightningコンポーネントはモバイル向けため開発、 VFの方はネット接続高が遅延で制限がある) |
一部のロジックはクライアントに処理 | Visualforceページ(開発のベロシティと管理可能性を確保するために) |
高度にインタラクティブとユーザ体験要求 | Lightningコンポーネント |
AngularJSやReactなどJSを使用したい | JavaScriptアプリケーションコンテナVisualforce |
コンポーネント組み合わせ | Lightningコンポーネント、Lightningアプリケーションビルダー |
JS交互体験とサードパーティのフレームワーク利用 | JavaScriptアプリケーションコンテナVisualforce |
ユーザインターフェース要素追加 | Lightningコンポーネント |
顧客またはパートナーのコミュニティ作成 | Lightningコンポーネント |
一般向けの認証のないWebサイト公開 | Lightningコンポーネント |
ページをPDF表示 | Visualforceページ(Lightningコンポーネントまたサポートしていない) |
既存プロジェクトはVisualforceページ | 引き続き Visualforce を使用する |
最新テクノロジ検討 | Lightningコンポーネント(LWC) |
まったく新しいプロジェクト開始時 | Lightningコンポーネント |
ビジネスプロセスに従うユーザを誘導するフローを構築する | Lightningコンポーネント、画面フロー作成 |