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

  • リリースバージョン: Washingtondc
  • 更新日 2024年02月01日
  • 読む7読むのに数分
  • JavaScript モジュールを使用してコードベースを最適化し、関連するコードをグループ化したり、サードパーティライブラリを追加したりして、アプリケーション間でコードを再利用します。

    概要

    モジュールは JavaScript または TypeScript ファイルにすることができ、インスタンス上のアプリケーション間でエクスポートされて再利用される関連コードが含まれています。SDK を使用して ServiceNow 作成または変換されたスコープ対象のアプリケーションでは、 から JavaScript モジュールとサードパーティライブラリ Visual Studio Codeを追加できます。

    モジュールでは、 エクスポート ステートメントで再利用するコードを指定します。外部モジュールとスクリプトでモジュールコードにアクセスするには、アプリケーションの package.json ファイルの exports フィールドにエントリーポイントを追加します。次に、 import ステートメントまたは require ステートメントを使用して、アプリケーションの他の場所でコードを再利用します。アプリケーションは、モジュール コードを使用するために、他のアプリケーションまたはサードパーティのノード パッケージ マネージャー (npm) ライブラリへの依存関係を宣言する必要があります。

    モジュールを追加してローカルアプリケーションをインスタンスに展開すると、モジュールは EcmaScript モジュール [sys_module] テーブルに格納されます。モジュールが複数のアプリケーションで使用されている場合は、EcmaScript モジュール [sys_module] テーブルに複数のレコードがあります。

    JavaScript モジュールの作成に使用される構文に関する一般的な情報については、MDN Web Docs ウェブサイトの JavaScript モジュール ページを参照してください。アプリケーションで TypeScript を使用するには、「」を参照してください SDK での ServiceNow TypeScript の使用

    制限事項

    • グローバルアプリケーションとアプリケーションのカスタマイズはサポートされていません。
    • ECMAScript 機能のサブセットは、に従ってモジュール JavaScript エンジン機能のサポートでサポートされます。
    • Node.js API はモジュールではサポートされていません。
    • Web API に関連するグローバル変数はサポートされていません。
    • インポート および エクスポート ステートメントは、ビジネスルールやスクリプトインクルードなどのスクリプトではサポートされていません。これらはモジュールでのみサポートされています。
    • アプリケーションに追加されたサードパーティのライブラリは、API にアクセスしたり呼び出し ServiceNow たりすることはできません。
    • グローバル Glide API は、デフォルトではモジュールでは使用できません。これらは @servicenow/glide パッケージからインポートできます。
    • JavaScript モジュール [sys_module] をプラットフォームから変更することはできません。これらは、SDK を使用してインスタンス内で Visual Studio Code 変更し、デプロイする必要があります。
    重要:
    サポートされていない API や ECMAScript 機能など、サポートされていない機能に依存するサードパーティのライブラリを使用することはできません。

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

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

    異なるアプリケーションのスクリプトとモジュールがモジュールからコードにアクセスするには、package.json ファイルの exports フィールドを使用してアプリケーションへのエントリーポイントを定義します。次の例は、数学関数の "math" という名前のアプリケーション用です。

    表 : 1. パッケージからのモジュールコードのエクスポート
    手法

    モジュールを指す文字列値を指定します。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": "./src/main.js"
    }

    "."main.js モジュールのサブパスであるオブジェクトを使用します。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		".": "./src/main.js"
    	}
    }

    サブパスエクスポートとして add.js モジュールと subtract.js モジュールのみをエクスポートします。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./add": "./src/functions/add.js",
    		"./sub": "./src/functions/subtract.js"
    	}
    }

    指定したパスから、サブディレクトリを含むすべてのファイルをエクスポートします。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*": "./src/functions/*"
    	}
    }

    指定したパスから特定のファイルタイプのファイルのみをエクスポートします。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js"
    	}
    }

    特定のファイルタイプのファイルをエクスポートしますが、ディレクトリ内のフォルダはプライベートに保ちます。

    {
    	"name": "math",
    	"version": "1.0.0",
    	"exports": {
    		"./functions/*.js": "./src/functions/*.js",
    		"./functions/private-functions/*": null
    	}
    }

    モジュールのインポート

    再利用するモジュールコードをインポートするには、他のモジュールで 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"
    	}
    }
    この例に基づいて、数学アプリケーションにインポートするたびに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"
    	}
    }