17 Oracle JETアプリケーションのパフォーマンスの最適化

Oracle JETアプリケーションは、クライアント側のHTML5アプリケーションです。クライアント側のHTMLアプリケーションに関連するパフォーマンス最適化のほとんどの推奨事項は、Oracle JETを使用して開発されたアプリケーションまたはOracle JETコンポーネントにも該当します。さらに、一部のOracle JETコンポーネントには、コンポーネント固有のパフォーマンス推奨事項があります。

パフォーマンスおよびOracle JETアプリケーションについて

一般的に、Oracle JETアプリケーションは、クライアント側のHTML5アプリケーションのパフォーマンスを最適化するのと同じ方法で最適化できます。

パフォーマンスの最適化に関するヒントを提供するオンライン・リソースは多数あります。たとえば、Google Developers Webサイトでは、アプリケーションのパフォーマンスを向上するツールについて説明されています。

Googleツールに基づいて作成されたほとんどの推奨事項を実施するかどうかはユーザーが決めることができます。ただし、Oracle JETには、ペイロード・サイズ、およびOracle JETアプリケーションのCSSを取得するためのデータ転送数を減らす機能が含まれています。通常は、できるだけ次のガイドラインに従ってください。

  1. サーバーからのリクエスト数を減らすために、常にアプリケーション・リソースを縮小してバンドルします。
  2. ネットワーク使用量を最小限に抑えるため、Oracle CDNからリソースをロードするようにアプリケーションを構成します。
  3. CDN上のOracle JETライブラリを使用するようにアプリケーションを構成します。こうすると、bundles-config.jsスクリプトが、縮小されたバンドルとモジュールをデフォルトでロードします。
  4. gzipでアプリケーションを圧縮してサイズを減らします(また、Webサーバーで圧縮を有効にします)。
  5. WebサーバーでHTTPキャッシュを有効にします。一部のリクエストの処理がサーバーからではなくキャッシュからできるようになります。常にサーバーから処理する必要があるファイルにはETagを使用します。
  6. HTTP/2を利用して、HTTP/1.1を使用する場合よりも速くページ・リソースを処理します。
  7. シングル・ページ・アプリケーションを使用して、アプリケーション全体の分解と再構築をブラウザが強制されないようにします。
  8. 単一ページに配置するデータ中心コンポーネントの数が多くならないようにします。
  9. グラフィック・イメージの最適化: ベクトル形式を優先します。提供される最適な全体の圧縮率に基づいて、適切なイメージ形式を選択します。

これらの最適化のヒントやその他の情報の詳細は、「Oracle JETアプリケーションへのパフォーマンスの最適化の追加」を参照してください。

Oracle JETアプリケーションへのパフォーマンスの最適化の追加

Webアプリケーションのパフォーマンスを最適化するためのほとんどのヒントは、Oracle JETアプリケーションにも該当します。ただし、JavaScript、CSS、Oracle JETコンポーネント、RESTコールおよびイメージを最適化するために、Oracle JETアプリケーションに特に適用するステップがいくつかあります。

JavaScriptパフォーマンスのヒント

パフォーマンスのヒント 詳細

予期されるJavaScriptフォルダ構造を維持します

Oracle JETツールによって生成されたフォルダ構成を使用し、アプリケーション・ルート・ディレクトリのjsフォルダ内のすべてのJavaScriptファイルを維持します。

アプリケーションで必要なJavaScriptコードのみを送信します。

Oracle JETには、RequireJSを使用してロードできるモジュールが含まれています。詳細は、「モジュラ開発に対するRequireJSの使用」を参照してください。1つの方法は、アプリケーションで使用するJavaScriptモジュールをプリロードすることです。次のサンプルは、アプリケーションのmain.js内でrequire関数を変更する方法を示しています。
require(['ojs/ojbootstrap', 'knockout', 'ojs/ojknockout'],
  function (Bootstrap) {
    Bootstrap.whenDocumentReady().then(
      function () {
        function init() {
        }

        // If running in a hybrid (e.g. Cordova) environment, we need to wait for the deviceready
        // event before executing any code that might interact with Cordova APIs or plugins.
        if (document.body.classList.contains('oj-hybrid')) {
          document.addEventListener('deviceready', init);
        } else {
          init();
        }

        //after main doc is done preload some js
        require(['ojs/ojbutton', 'ojs/ojdvt-base', 'ojs/ojtree', 'ojs/ojaccordion', 'ojs/ojtreemap'], //example of what can be preloaded
          function()
          {
          }
        );
      }
    );
  }
);

縮小/難読化されたJavaScriptを送信します。

Oracle JETには、Oracle JETライブラリの縮小バージョンおよびサード・パーティ・ライブラリ(使用可能な場合)が用意されています。デフォルトでは、アプリケーションのリリース・バージョンをビルドするときに、path_mapping.json内のこれらのライブラリの縮小バージョンのパス・マッピングがOracle JET RequireJSブートストラップ・ファイルに挿入されます。これは、すべてのOracle JETディストリビューションに含まれています。次のサンプルは、縮小ライブラリをリリース・モードで使用できるpath_mappings.jsonの単一のライブラリを示しています。

"jquery": {
   "cdn": "3rdparty",
   "cwd": "node_modules/jquery/dist",
   "debug": {
     "src": "jquery.js",
     "path": "libs/jquery/jquery-#{version}.js",
     "cdnPath": "jquery/jquery-3.x.x"
   },
   "release": {
     "src": "jquery.min.js",
     "path": "libs/jquery/jquery-#{version}.min.js",
     "cdnPath": "jquery/jquery-3.x.x.min"
   }
},

Oracle JETアプリケーションでRequireJSブートストラップ・ファイルを使用する方法の詳細は、「Oracle JETアプリケーションでのRequireJSについて」を参照してください。

JavaScriptを取得するためのデータ転送数を最小化します。

Oracle JETではデータ転送数の最小化がサポートされていませんが、RequireJSにはモジュールの結合に使用できる最適化ツールがあります。詳細は、RequireJSオプティマイザのドキュメントを参照してください。別の方法として、TerserなどのJavaScriptコード・ミニファイアを使用し、JavaScriptソースをバンドルして最小化します。

最初のレンダリングで不要なJavaScriptには遅延ロードを使用します。

最初のレンダリングで不要なコンテンツを遅延ロードできます。たとえば、oj-film-stripコンポーネントを構成して、リクエストされた場合のみ子ノード・データを取得できます。例は、Oracle JETクックブック例の遅延ロード(oj-film-strip)を参照してください。

ペイロードを圧縮またはzipします。

Oracle JETはサーバーに対する制御がないため、この推奨事項を実施するのはユーザー自身です。追加の詳細およびヒントについては、https://developers.google.com/speed/docs/best-practices/payload#GzipCompressionを参照してください。

キャッシュ・ヘッダーを設定します。

JETはサーバーに対する制御がないため、この推奨事項を実施するのはユーザー自身です。キャッシュ最適化の詳細は、https://developers.google.com/speed/docs/best-practices/cachingを参照してください。

CSSパフォーマンスのヒント

パフォーマンスのヒント 詳細

予期されるCSSフォルダ構造を維持します

Oracle JETツールによって生成されたフォルダ構成を使用し、アプリケーション・ルート・ディレクトリのcssフォルダ内のすべてのCSSファイルを維持します。

必要なすべてのCSSのページを1回レンダリングします

HTMLページのHEADセクション内のスタイル・シートにリンクします。すでにロードされたページの再レンダリングを回避するため、ページ本文のCSSリンクは使用しません。

アプリケーションで必要なCSSのみを送信します。

アプリケーションに送信されるCSSコンテンツを制御するには、カスタム・テーマを作成し、アプリケーションに必要なCSSに含める内容を制限します。「カスタム・テーマでのCSSの最適化」を参照してください。

また、Oracle JETグリッド・システムを使用している場合は、CSSに含めるレスポンシブ・クラスも制御できます。詳細は、「CSSのサイズおよび生成の制御」を参照してください。

縮小/難読化されたCSSを送信します。

Oracle JETでは、デフォルトで、縮小されたCSSが含まれています。ただし、アプリケーションで必要なCSSのみを送信するようにCSSを変更する場合は、Sassを使用して出力を最小化できます。詳細は、http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style:compressedオプションを参照してください。

Oracle JETアプリケーションおよびコンポーネントのパフォーマンスのヒント

パフォーマンスのヒント 詳細
Oracle CDNとOracle CDNがJETに提供しているバンドル構成サポートを使用してバンドルされたJETモジュールとライブラリをロードするように、アプリケーションを構成します。 Oracleコンテンツ配信ネットワーク(CDN)とバンドル構成サポートを利用することにより、エンタープライズ・アプリケーションのアプリケーション起動パフォーマンスが最適化され、また、特定のOracle JETリリースに必要なモジュールとライブラリのバージョンを使用してアプリケーションがビルドされます。アプリケーション内でバンドルを直接参照することは、バンドルの構成を直接参照するリンクを追加したり変更することも含め、推奨されません。詳細は、「Oracle CDN最適化のためのアプリケーションの構成について」を参照してください。
プレーンHTMLコンポーネントを使用する可能性を検討します。 スタンプ・コンポーネント(表またはListViewなど)または宣言的なコンポーネント(コンポジット・コンポーネントなど)に対し、読取り専用入力コンポーネントやボタンなどの単純なOracle JETコンポーネントを組み込む場合は、かわりにプレーンHTMLコンポーネントを使用することを検討してください。プレーンHTMLコンポーネントは軽量化(DOMをより少なくすること)が可能で、コンポーネントがスタンプされる場合は追加することができます。ただし、プレーンHTMLでは、コンバータやバリデータなど、Oracle JETコンポーネントが提供する、組込みアクセシビリティ・サポートは使用できません。

Oracle JETコンポーネントのベスト・プラクティスに準拠します。

Oracle JETコンポーネントについては、APIドキュメントを参照してください。『Oracle® JavaScript Extension Toolkit (Oracle JET) APIリファレンス』には、コンポーネントのパフォーマンスに関する項があります(該当する場合)。例については、 ojDataGridのパフォーマンスに関する項を参照してください。

ページごとのOracle JETコンポーネントの数を制限します。

ページのコンポーネント数がページのロード時間に影響します。ロード時間を短縮するには、ページに配置するデータ中心コンポーネントの数を減らします。

oj-defer要素を使用してバインディングの実行を遅延させます

表示する非表示のコンテンツがコンポーネントに含まれている場合、oj-defer要素は、非表示のコンテンツが表示されるようになるまで子コンポーネントにバインディングを適用するプロセスを遅延します。oj-deferの詳細は、 oj-defer APIドキュメントを参照してください。

コレクション・コンポーネントのフェッチ・サイズを制限します

コレクション・コンポーネントのscroll-policy-options.fetch-size属性を、コンポーネント・ビューポートに表示するアイテム数と同じ数に設定します。また、scroll-policy="loadMoreOnScroll"を設定して、ユーザーがフェッチされたリストの後方にスクロールした場合にのみ、追加アイテムのフェッチが発生するようにします。

RESTリクエストのパフォーマンスのヒント

パフォーマンスのヒント 詳細

クライアントとサーバー間のデータ転送数を減らします。

データ転送数を減らすために使用できる技術は多数あり、ここではいくつかの例を示します。

  • ページのRESTリクエスト数がページのロード時間に影響します。ロード時間を短縮する必要がある場合は、ページを簡略化し、RESTリクエストを減らします。

  • 以前のRESTコールのデータを必要とするRESTコールでは、シリアライズをトリガーする依存性が作成され、データ・フェッチのレスポンス時間が長くなります。レスポンス時間を短縮するには、UIで必要なデータのみをフェッチするようにRESTコールを再定義して、依存RESTコールの数を最小限に抑えます。理想は、RESTエンドポイントが必要なデータのみのフェッチをサポートすること、あるいは必要に応じて再設計できることです。

  • すべてのREST操作は非同期で実行される必要があります。非同期状態を管理するには、開始からPromiseを返すメソッドを使用してRESTエンドポイントを呼び出します。

  • RESTエンドポイントの応答が遅いときに、そのデータがアプリケーションで不可欠な場合は、非ブロッキングのRESTエンドポイント呼出しでデータをプリフェッチすることを検討してください。

  • RESTエンドポイントは、ページ区切りをサポートするように設計する必要があります。

イメージの最適化

パフォーマンスのヒント 詳細

予期されるimagesフォルダ構造を維持します

Oracle JETツールによって生成されたフォルダ構成を使用し、アプリケーション・ルートのimagesフォルダ内のすべてのイメージ・ファイルを維持します。

イメージ・サイズを縮小します。

イメージのサイズを縮小すると、ダウンロードが高速になり、画面にコンテンツをレンダリングする所要時間が短縮されます。たとえば、Scalable Vector Graphics (SVG)イメージは、通常、Portable Network Graphics (PNG)イメージより小さく、高解像度デバイス上でスケール変更されます。

イメージのサイズを縮小するのに使用できるサード・パーティのツールも多数あります。選択するツールは、次のようにイメージ・タイプによって決まります。

  • imagemin: PNGイメージを圧縮するユーティリティ

  • svgomg: SVGイメージを圧縮するユーティリティ。このツールをオンラインで使用したり、svgoをダウンロードして独自のシステムでイメージを使用できます。

クライアントとサーバー間のデータ転送数を減らします。

データ転送数を減らすために使用できる技術は多数あり、ここではいくつかの例を示します。

  • アイコン・フォント

    アイコンで単色を使用する場合は、アイコン・フォントが便利です。

    Oracle JETではアイコン・フォントを使用し、アイコン・フォントにその例を示しています。

    インターネットから、アイコン・フォントの生成に使用できるユーティリティ(IcoMoonなど)を入手できます。

  • イメージ・スプライト

    イメージ・スプライトは単一のイメージに結合されたイメージのコレクションで、サーバー・リクエストの数を減らします。例は、http://www.w3schools.com/css/css_image_sprites.aspから入手できます。

  • 遅延ロード

    遅延ロードを使用して、ユーザーのビューポートにないイメージのロードを遅延できます。この技術を使用する多数の例とユーティリティは、インターネット上で入手できます。

  • Base64エンコーディング

    Base64エンコーディングを使用して、イメージ・データをインライン化できます。通常はUniform Resource Indicator (URI)で使用され、追加情報はhttps://developer.mozilla.org/docs/Web/HTTP/data_URIsから入手できます。

パフォーマンスのその他のヒントは、パフォーマンスを監査する方法など、Webページの品質向上に関するGoogle開発者用のドキュメントを参照してください。

Oracle CDN最適化のためのアプリケーションの構成について

Oracleコンテンツ配信ネットワーク(CDN)およびCDNでサポートされるOracle JETディストリビューションを使用することにより、アプリケーションの起動時のネットワーク負荷を最小限に抑えるようにOracle JETアプリケーションを構成できます。

Oracle JETの必須ライブラリとモジュールのローカル・ロードは、アプリケーション作成時にデフォルトで構成されますが、Oracle CDNは使用されず、ブラウザで実行されているアプリケーションごとにライブラリとモジュールをスタンドアロン形式でロードする必要があるため、本番アプリケーションでは推奨されません。このデフォルト構成を使用できるのは、アプリケーションをローカルでビルドおよび提供する場合であり、テスト環境でアプリケーションをステージングしてネットワーク・アクセスをシミュレートする必要が生じるまでの間です。

Oracle CDN最適化を有効にするには、アプリケーションのpath_mapping.jsonファイルを構成します。パス・マッピング・ファイルで構成されたオプションによって、アプリケーション全体のライブラリ設定とモジュール設定が決まります。path_mapping.jsonファイルを使用すれば、他のアプリケーション・ファイルで必須ライブラリとモジュールのパスURLを編集する必要はありません。CDN最適化のパス・マッピングを構成すると、ツールでmain.jsファイルのrequireブロックを更新する方法と、アプリケーションでモジュールとライブラリをロードする方法が次のように決定されます:

  • バンドル構成にアクセスせずにCDNを使用するようパス・マッピングを構成し、モジュールとライブラリがCDNから個別にロードされるようにすると、ツールによってパス・マッピング・ファイルからmain.jsファイルのrequireブロックにURLが挿入されます。

  • CDNのバンドル・ロード処理を使用するようにパス・マッピングを構成すると、ツールによってindex.htmlファイルが更新され、次のスクリプト参照からバンドル構成スクリプト・ファイル(bundles-config.js)が実行されます。

    <body>
      <script type="text/javascript" src="https://static.oracle.com/cdn/jet/17.1.0/default/js/bundles-config.js"></script>
    ..
    </body>

    ノート:

    JETリリース9.0.0以降、先行文字"v"を使用してリリース番号を識別する規則が変更されました。前述の例に示すように、リリース識別子は、17.1.0と指定されたsemver値(先行文字なし)になりました。

バンドル構成ファイルでは、CDNからバンドルされたモジュールとライブラリのセットとしてロードするためにアプリケーションが実行する独自のrequireブロックを指定します。このようにアプリケーションを構成すると、サード・パーティのライブラリで構成されるURLリストのみが表示されるようにmain.jsファイルがツールによって更新されます。バンドル構成シナリオでは、main.jsファイルに挿入されたrequireブロックは、リストに追加する必要のあるアプリケーション固有のライブラリに対応したプレースホルダになります。バンドル構成ファイルのrequireブロックとアプリケーションのmain.jsファイルの間でURLの重複が生じる場合は、バンドル構成が優先され、CDNからのバンドル・ロード処理が優先的に実行されます。

ヒント:

Oracleでは各リリースの構成が保持されるため、Oracle CDNのバンドル構成スクリプト・ファイルを参照するようにアプリケーションを構成することをお薦めします。アプリケーションに現在のバンドル構成を参照させることにより、サポートされるライブラリとモジュールの最新バージョンを使用してアプリケーションを実行できます。

ライブラリおよびモジュールのバンドル・ロード処理の構成

Oracle CDN最適化では、CDNからバンドルされたライブラリおよびモジュールのセットをロードするバンドル構成スクリプトを使用できます。

バンドル構成スクリプトを使用してライブラリとモジュールのバンドル・ロード処理を構成するには、次のステップを実行します。

  1. アプリケーションのappRootDir/src/jsディレクトリにあるpath_mapping.jsonファイルを開き、use要素の値をcdnに変更します。
    "use": "cdn"
  2. cdns要素は変更せず、そのままにします。Oracle JETおよびサード・パーティ・ライブラリのデフォルトのパス定義は、次のように表示されます。
    "cdns": {
        "jet": {
           "prefix": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
           "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
           "config": "bundles-config.js"
        },
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty"
    },
    

    ノート:

    JETリリース9.0.0以降、先行文字"v"を使用してリリース番号を識別する規則が変更されました。前述の例に示すように、リリース識別子は、17.1.0と指定されたsemver値(先行文字なし)になりました。
  3. (オプション)バンドル・ロード処理の場合は、各サード・パーティ・ライブラリについて、cdn要素の値を3rdpartyからjetに変更します。たとえば、このKnockoutライブラリのパス定義は"cdn": "jet"と表示されているため、KnockoutライブラリのURLはmain.jsファイルに挿入されません。
    "libs": {
    
      "knockout": {
        "cdn": "jet",
        "cwd": "node_modules/knockout/build/output",
       ...
     },

    サード・パーティ・ライブラリごとに"cdn": "jet"と設定すると、ライブラリのURLはmain.jsファイルのrequireブロックに挿入されません。main.jsファイルに重複したURLパスがあると、それらはバンドル構成スクリプトによってオーバーライドされるため、この変更を行わなくても、サード・パーティ・ライブラリのバンドル・ロード処理は実行されます。

  4. ファイルを保存し、アプリケーションをビルドまたは提供して、バンドル・ロード処理の構成を完了します。

ライブラリおよびモジュールの個別ロード処理の構成

バンドル構成スクリプトにアクセスせずにCDNを使用するようパス・マッピングを構成すると、モジュールおよびライブラリがCDNから個別にロードされます。

(バンドル構成スクリプトを使用せずに) main.jsファイルのrequireブロックに基づいてライブラリとモジュールを個別にロードする処理を構成するには、次のステップを実行します。
  1. アプリケーションのappRootDir/src/jsディレクトリにあるpath_mapping.jsonファイルを開き、use要素の値をcdnに変更します。
    "use": "cdn"
  2. cdns要素を編集してconfig要素を削除し、これにより、Oracle JETおよびサード・パーティのライブラリのcdnsパス定義は次のような形式になります。
    "cdns": {
        "jet": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
        "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty"
    }
  3. ファイルを保存し、アプリケーションをビルドまたは提供して、main.jsファイルのrequireブロックの構成を完了します。
必須ライブラリのリストを変更する必要がある場合(たとえば、別のリリース・バージョンを指定するなど)、main.jsファイルは編集せず、かわりにpath_mapping.jsonファイルを編集して、バンドル・ロード処理の場合には、アプリケーションのindex.htmlファイルでbundles-config.jsのURLも編集します。変更を適用するには、アプリケーションを再ビルドする必要があります。path_mapping.jsonファイルおよびツールで実行される構成変更の詳細は、「パス・マッピング・スクリプト・ファイルと構成オプションの理解」を参照してください。

パス・マッピング・スクリプト・ファイルと構成オプションの理解

Oracle JETでは提供されないライブラリおよびモジュールを使用して、アプリケーションへの追加の機能の統合が必要になる場合があります。Oracle JETのコマンドライン・インタフェース(CLI)を使用してビルドされたアプリケーションには、このプロセスに役立つpath_mapping.jsonファイルというメカニズムがあります。

アプリケーションのビルドまたは提供時、Oracle JETツールによってappRootDir/src/js/path_mapping.json構成ファイルが呼び出され、パス・マッピングuse属性に構成された設定に基づいて、Oracle JETモジュールとライブラリのURIパスが決定されます。

use属性は、デフォルトでlocalに設定され、コアOracle JETライブラリ(ojsojL10nojtranslationsなど)およびサード・パーティの依存性ライブラリ(knockoutjqueryhammerjsなど)を含む必須ライブラリの場所を指定します。

アプリケーションのビルド時に、Oracle JETでは、アプリケーションのmain.jsファイルのrequirejs.config()関数を使用して、path_mapping.jsonファイルに指定された各ライブラリのロード・パスを定義します。各ライブラリ・パスURIは、libsマップにリストされているライブラリのpathまたはcdnPath属性に基づいて決定されます。

たとえば、Knockoutライブラリのパス・マッピング・エントリの詳細は、次のようになります。

"libs": {
  "knockout": {     
    "cdn": "3rdparty",
    "cwd": "node_modules/knockout/build/output",
    "debug": {
      "src": "knockout-latest.debug.js",
      "path": "libs/knockout/knockout-#{version}.debug.js",
      "cdnPath": "knockout/knockout-3.x.x.debug"
    },
    "release": {
      "src": "knockout-latest.js",
      "path": "libs/knockout/knockout-#{version}.js",
      "cdnPath": "knockout/knockout-3.x.x"
    }
},

アプリケーションのビルドまたは提供後、main.jsファイルのrequirejs.config()パス・マップには、次のパス・マッピングが含まれます。

"knockout":"libs/knockout/knockout-x.x.x.debug"

path_mapping.json構成ファイルとその使用方法の詳細は、「Oracle JETアプリケーションへのサード・パーティ・ツールまたはライブラリの追加」を参照してください。

コンテンツ配信ネットワークでのライブラリおよびモジュールの使用

次のリストには、CDNおよびOracle JETアプリケーションでホストされるライブラリおよびモジュールの使用で発生する一般的なシナリオが含まれています。

Oracle CDNに対応した構成の場合、main.jsファイルのrequireブロックは、アプリケーションにローカルなパス・マッピング・ファイルに基づいてすべて決定されるか、バンドル・ロード処理の最適化の場合は、一部はパス・マッピング・ファイルから、一部はOracle CDN上のOracleで保持されているbundles-config.jsファイルのrequireブロックから決定されます。main.jsファイルのパス・インジェクタ・マーカーは、リリース固有のURLが表示される位置を示します。

  • CDNのシナリオ1: ライブラリとモジュールをバンドルとしてOracle CDNからロードする場合、デフォルトではサード・パーティ・ライブラリのパス・マッピングのみがmain.jsファイルのrequireブロックのURLライブラリ・リストに表示されます。

    たとえば、Knockoutライブラリのパス・マッピング定義の詳細は、次のようになります。config属性で、バンドル構成スクリプト・ファイルの名前はbundles-config.jsと指定されています。

    "baseUrl": "js" <==ignored
    "use": "cdn"
    
    "cdns": {
        "jet": {
           "prefix": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
           "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
           "config": "bundles-config.js"
         },
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty"
    },
    
    "libs": {
       ...
         "cdnPath": "knockout/knockout-3.x.x"
    }

    アプリケーションのビルドまたは提供後、main.jsファイルのrequireブロックには、サード・パーティ・ライブラリのURLのリストがプレースホルダとして挿入されます。

    bundles-config.jsファイルのrequireブロックに指定されているライブラリとモジュールは、main.jsファイルのrequireブロックに重複したライブラリがある場合、その重複ライブラリに優先してロードされることに注意してください。ただし、必要に応じて、サード・パーティ・ライブラリのURLがmain.jsファイルのrequireブロックに表示されないように、そのパス・マッピングを構成できます。これを行うには、各サード・パーティ・ライブラリのパス定義で、path_mapping.jsonファイルの"cdn": "3rdparty""cdn": "jet"に編集します。

  • CDNのシナリオ2: パス・マッピングURLを使用して場所を指定し、Oracle CDNからライブラリを個別にロードする場合、ライブラリURLのリストはすべてmain.jsファイルのrequireブロックに表示されます。

    たとえば、cdns要素を編集してバンドル構成スクリプト参照を削除すると、Knockoutライブラリのパス・マッピング定義の詳細は、次のようになります。

    "baseUrl": "js" <==ignored
    "use": "cdn"
    
    "cdns": {
        "jet": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
        "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty"
    }
    
    "libs": {
       ...
         "cdnPath": "knockout/knockout-3.x.x"
    }
    

    ビルドまたは提供後、main.jsファイルのrequireブロックには、次のURLが(その他すべてのベース・ライブラリとモジュールのURLとともに)挿入されます。

    "knockout": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty/knockout/knockout-3.x.x"

  • CDNのシナリオ3: アプリケーションでOracle以外のCDNにあるライブラリにアクセスする必要がある場合は、path_mapping.jsonファイルを更新して、独自のCDNエンドポイントおよびライブラリ定義を指定します。

    バンドル構成スクリプトを使用するかどうかによって、次のように、CDN名とエンドポイントURIをcdns定義に追加します。

    バンドル構成スクリプトを使用してライブラリとモジュールをロードする場合:

    "cdns": {
        "jet": {
          "prefix": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
          "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
          "config": "bundles-config.js"
        },
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty"
        "yourCDN": "endPoint to your own CDN"
    },
    ...
    

    または、(バンドル構成スクリプトを使用せずに)ライブラリとモジュールを個別にロードする場合:

    "cdns": {
        "jet": "https://static.oracle.com/cdn/jet/17.1.0/default/js",
        "css": "https://static.oracle.com/cdn/jet/17.1.0/default/css",
        "3rdparty": "https://static.oracle.com/cdn/jet/17.1.0/3rdparty",
        "yourCDN": "endPoint to your own CDN"
    },
    ...
    

    その後で、ライブラリのリストにライブラリ・エントリを次のサンプルのように定義します。

    "yourLib": {
      "cdn": "yourCDN",
      "cwd": "node_modules/yourLib",
      "debug": {
        "src": "yourLib.js",
        "path": "libs/yourLib/yourLib.js",
        "cdnPath": "yourLib/yourLib.js"
      },
      "release": {
        "src": "yourLib.min.js",
        "path": "libs/yourLib/yourLib.min.js",
        "cdnPath": "yourLib/yourLib.min.js"
      }
    },