3

私が構築した Fiori のようなアプリの依存関係として含めたいカスタム ライブラリ com.foo.library があります。

SAP Fiori Launchpad for Developers -> Launchpad アプリのベスト プラクティス

component.js 構成ファイルで、アイコンの場所やライブラリの依存関係などの構成情報を宣言します。

私のライブラリを依存関係として追加すると、次のようになります

    dependencies: {
        libs: ["sap.m", "sap.ui.layout", "com.foo.library"],
        components: []
    },

Fiori では、相対パスを使用する必要があるという制約があります。

たとえば、私の依存関係が機能するためには、次の場所にある必要があります

/resources/com/foo/library

カスタム ライブラリを ABAP SAPUI5 リポジトリにアップロードし、相対パスで提供する手順は何ですか?

編集:

現在、Component.initにライブラリをロードしています

 sap.ui.getCore().loadLibrary("com.foo.library", "absolute path to library");

動作しますが、ライブラリを依存関係として設定したい

ComponentMetadata.prototype._loadDependencies = function() {
..
            if (aLibraries) {
            jQuery.each(aLibraries, function(i, sLib) {
                jQuery.sap.log.info("Component \"" + that.getName() + 
                sap.ui.getCore().loadLibrary(sLib);
            });
        }

上記のコードから、コンポーネントがライブラリの依存関係をロードするときに URL を渡すオプションがないことがわかります。そのため、リソースに対してライブラリを見つける必要があると想定しています。

4

1 に答える 1

4

Fiori アプリで:

  1. 依存関係をアプリ記述子 (manifest.json) に入れます (または、Component.js 内の構成にアプリ記述子が使用されていない場合)。

    dependencies: {
        libs: ["sap.m", "sap.ui.layout", "com.foo.library"],
        components: [com.foo.component]
    }
    
  2. ライブラリの名前空間を検索する場所を sap.ui.core に知らせます (Component.js の上部)。

    jQuery.sap.registerModulePath("com.foo", "/Path/on/the/server/");
    

これで、依存関係を使用できます。その理由は次のとおりです。

モジュールがロードされる前に、そのモジュール名の最も長い登録済みプレフィックスが検索され、関連付けられた URL プレフィックスが要求 URL のプレフィックスとして使用されます。モジュール名の残りの部分は、ドット (「.」) をスラッシュ (「/」) に置き換えることで、リクエスト URL に添付されます。

登録と検索はフル ネーム セグメントのみで動作します。

出典: SAP UI5 API ドキュメント

于 2016-03-17T15:04:43.067 に答える