JavaScript モジュールとサードパーティライブラリ

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:5分
  • JavaScript モジュールを使用してコードベースを最適化し、関連するコードをグループ化したり、サードパーティライブラリを追加してアプリケーション内でコードを再利用したりします。

    JavaScript モジュールの使用の概要

    モジュールは JavaScript ファイルであり、インスタンス上のアプリケーション内で共有および再利用される関連コードが含まれています。ServiceNow IDE または ServiceNow SDK で作成または変換されたスコープ対象のアプリケーションに、JavaScript モジュールとサードパーティライブラリを追加できます。アプリケーションをビルドする前に、TypeScript を使用してモジュールを作成し、それを JavaScript にコンパイルすることもできます。インスタンスでは、JavaScript モジュールは EcmaScript モジュール [sys_module] テーブルに保存されます。

    モジュールでは、export ステートメントで再利用するコードを特定します。次に、import ステートメントまたは require ステートメントを使用して、アプリケーションの他の場所でコードを再利用します。アプリケーションは、モジュールコードを使用するために、サードパーティのノードパッケージマネージャー (npm) ライブラリへの依存関係を宣言する必要があります。JavaScript モジュールの作成に使用される構文に関する一般的な情報については、MDN Web Docs Web サイトの「JavaScript modules (JavaScript モジュール)」ページを参照してください。

    注:
    グローバル Glide API をモジュールで使用するには、@servicenow/glide パッケージからインポートする必要があります。例:import { gs } from '@servicenow/glide'

    制限事項

    • グローバルアプリケーションとアプリケーションのカスタマイズはサポートされていません。
    • モジュールは、追加されたアプリケーションスコープ内でのみ使用できます。アプリケーションスコープ全体で使用することはできません。
    • ECMAScript 機能のサブセットは、「JavaScript エンジン機能のサポート」に従ってモジュールでサポートされます。
    • Node.js API はモジュールではサポートされていません。
    • Web API に関連するグローバル変数はサポートされていません。
    • アプリケーションに追加されたサードパーティライブラリは、ServiceNow API に対するアクセスや呼び出しはできません。
    • サードパーティライブラリからの CommonJS モジュールは、エクスポートが定義されていない限りサポートされません。サブパスのインポートは CommonJS モジュールではサポートされていません。サードパーティライブラリからの ECMAScript モジュールはサポートされています。
    • import ステートメントと export ステートメントは、モジュールでのみサポートされています。ビジネスルールやスクリプトインクルードなど、スクリプトにモジュールコードをインポートするには、require ステートメントを使用します。
    • JavaScript モジュール [sys_module] は、ServiceNow IDE 内、または ServiceNow SDKVisual Studio Code でのみ変更できます。
    重要:
    サポートされていない API や ECMAScript 機能など、サポートされていない機能に依存するサードパーティライブラリを使用することはできません。

    モジュールのエクスポート

    モジュールで、export ステートメントで再利用するコードを特定します。名前付きエクスポートまたはデフォルトのエクスポートを使用できます。名前付きエクスポートは変数、定数、関数、またはクラスに使用できますが、デフォルトのエクスポートは関数またはクラスのみに使用できます。次の例は、モジュール内の複数の機能 (関数と変数) の名前付きエクスポートを追加する 1 つの方法です。
    export { myFunction, myVariable };
    

    モジュールのインポート

    再利用するモジュールコードをインポートするには、他のモジュールで import ステートメントを使用するか、サーバーサイドスクリプトで require ステートメントを使用します。

    次の例は、エクスポートされた機能をモジュールにインポートする 1 つの方法です。
    import { feature } from "path/to/module";
    
    次の例は、エクスポートされた機能をスクリプトにインポートする 1 つの方法です。
    const { feature } = require("path/to/module");
    
    短縮形を使用してモジュールコードをインポートするには、アプリケーションの package.json ファイルの imports フィールドでサブパスを使用します。例:
    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js",
    		"./functions/private-functions/*": null
    	},
    	"imports": {
    		"#calc": "calculus",
    		"#derivative": "calculus/derivative"
    	},
    	"dependencies": {
    		"calculus": "1.0.0"
    	}
    }
    この例に基づくと、math アプリケーションにインポートするたびに derivative.js への相対パスを書き出す代わりに、#derivative 短縮形を使用できます。サブパスを imports フィールドで使用して、#calc などの依存関係の短縮形を使用することもできます。
    import { derivative } from '#derivative';
    import * as calculus from '#calc';

    依存関係の追加

    アプリケーションは、モジュールコードを使用するために、サードパーティライブラリへの依存関係を宣言する必要があります。アプリケーションの package.json ファイルに、依存関係のパッケージ名とバージョンを含めます。たとえば、「math」ライブラリのモジュールを「test」アプリケーションで使用するために、「math」パッケージを依存関係として追加します。
    {
    	"name": "test",
    	"version": "1.0.0",
    	"dependencies": {
    		"math": "1.0.0"
    	}
    }