JavaScript モジュールとサードパーティライブラリ
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 モジュール)」ページを参照してください。
@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 SDK の Visual Studio Code でのみ変更できます。
モジュールのエクスポート
export { myFunction, myVariable };
モジュールのインポート
再利用するモジュールコードをインポートするには、他のモジュールで 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"
}
}