JavaScript モジュールとサードパーティライブラリ
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 変更し、デプロイする必要があります。
モジュールのエクスポート
export { myFunction, myVariable };
異なるアプリケーションのスクリプトとモジュールがモジュールからコードにアクセスするには、package.json ファイルの exports フィールドを使用してアプリケーションへのエントリーポイントを定義します。次の例は、数学関数の "math" という名前のアプリケーション用です。
| 手法 | 例 |
|---|---|
|
モジュールを指す文字列値を指定します。 |
|
|
|
|
|
サブパスエクスポートとして add.js モジュールと subtract.js モジュールのみをエクスポートします。 |
|
|
指定したパスから、サブディレクトリを含むすべてのファイルをエクスポートします。 |
|
|
指定したパスから特定のファイルタイプのファイルのみをエクスポートします。 |
|
|
特定のファイルタイプのファイルをエクスポートしますが、ディレクトリ内のフォルダはプライベートに保ちます。 |
|
モジュールのインポート
再利用するモジュールコードをインポートするには、他のモジュールで import ステートメントを使用するか、サーバー側スクリプトで require ステートメントを使用します。
import { feature } from "path/to/module";
const { feature } = require("path/to/module");
{
"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 短縮形を使用できます。サブパスを imports フィールドで使用して、 #calc などの依存関係の短縮形を使用することもできます。import { derivative } from '#derivative';
import * as calculus from '#calc';依存関係の追加
{
"name": "test",
"version": "1.0.0",
"dependencies": {
"math": "1.0.0"
}
}