tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Lightning Web Componentsの開発 - Part 7

Lightning Web Components 開発者ガイドのJavascriptセクションの話。

JavaScript | Lightning Web Components 開発者ガイド | Salesforce Developers

JavaScript コードの共有

異なるコンポーネント間で共通のJavascriptを使用したいときの方法についてでした。


『import myFunction from "./myFunction";』という感じでファイルをインポートすることで実現できるとのことです。同じ階層の場合は、「./xxx」と相対パスで指定できます。


異なる階層の場合は、「c/componentName」とします。

デフォルト関数および変数のエクスポート

こういうことができますって感じかなと思います。

名前付き関数および変数のエクスポート

これもこういうのありますって感じ。

LWC コンパイラでコンポーネントのエントリポイントを解決する方法

普段の開発では気にしなくて良いかもって内容。

追加の JavaScript ファイルでエクスポートにアクセスする方法

サードパーティ JavaScript ライブラリの使用

重要な話。といっても静的リソースにアップロードして、import処理で使えるようにできますってことでした。静的リソースは「from "@salesforce/resourceUrl」で取得できます。


この辺ちゃんと調べないと行けなそうな箇所。

JavaScript での DOM の操作

やり方の話ではなく、基本的にはJavaScriptのDOMの操作は避けましょう。LWCの仕組みで対応しましょうという話。


サンプルコードのD3.js利用

D3.JsをLWCで動かすサンプルが用意されていました。


D3.jsのサイトから必要なファイルをダウンロード。という感じだったのですが、D3.zipのファイルをダウンロードできる箇所にたどり着けず。(D3.jsはあった)。調べたらSalesforceのLWCサンプルアプリにD3アプリがあったのでそっちから取得して動かしてみました。

lwc-recipes/force-app/main/default/lwc/libsD3 at main · trailheadapps/lwc-recipes · GitHub


動かしてみた結果。無事に外部のJavascriptライブラリを動かすことができました。


大事なのは『import { loadScript, loadStyle } from 'lightning/platformResourceLoader';』を宣言すること。これを宣言しないとLightning Web Securityにブロックされます。


そのほかJavascriptのみであれば次のように読み込むこともできるみたいです。

JavaScript ライブラリが Locker 準拠かどうかの確認

ひとまずこういう情報があるという感じ。セキュリティ仕様はまた別セクションが用意されています。

LWS が使用されているサードパーティライブラリの厳格モード

これも省略・・と思ったらけっこうインパクトのある内容でした。サードパーティスクリプトの "use strict"が宣言されている状態の場合、LWS (Lightning Web セキュリティ)にブロックされてしまうとのこと。サードパーティスクリプトがmin.jsとかだと確認できない気はしますが、エラーになるなってときには use strictの有無をチェックすると良いようです。

JavaScript からの API のコール

重要な内容。「デフォルトでは、JavaScript コードからサードパーティ API への WebSocket 接続やコールを実行することはできません。そのためには、サーバを CSP 信頼済みサイトとして追加する必要があります。」とのこと。


CSP 信頼済みサイトはこの設定のこと。

まとめ

LWC開発の中で特に重要となるサードパーティスクリプトの読み込み方法を確認できました。