0

CDNモジュールからネストされた依存関係を定義しようとしています。

次のエラーが発生します:config

行:1765エラー:./ modules / MyConcreteWidget / templates.htm HTTPステータス:404

CDN "text!./ pathing"は、ローカルWebアプリケーションにあると考えているようです。参照されるすべてのファイルは実際にCDNに存在し、ブラウザのアドレスバーから表示できます。

「MyWidget」への呼び出しをrequire(それ自体)でラップする必要がありますか?

ローカル要求の構成は次のように見えます:

require.config({
    paths:
    {
        , jquery: '/scripts/jQuery/jquery-1.8.3.min'
        , jsRender: '/scripts/jQuery/jsrender-1.0pre'
        , text: '/scripts/RequireJS/2.1.4/text-2.0.5'
        , domReady: '/scripts/RequireJS/2.1.4/domReady-2.0.1'
        , 'myConcreteWidget': '/Modules/MyConcreteWidget/control' 
        , 'myWidet': 'http://server1/Modules/MyWidget/control'
    },
shim:
    {
        'jsRender': { deps: ['jquery'] }
    }
});

ローカル要件は次のように見えます:

require(['myConcreteWidget', 'domReady'],

    function (myConcreteWidget, domReady) {

        domReady(function () {

                // Use the concrete widget here...
        });
    });

LOCAL DEFINE LOOKS LIKE:myConcreteWidget
この定義は、依存関係としてCDN「ウィジェット」を使用します。

define(
    [
        'myWidget'
    ],
    function (myWidget) {

        var concrete = new myWidget.MyWidget();

        // Configure the concrete here...

        // Return concrete widget here
        return concrete;
    });

CDN DEFINE LOOKS LIKE:myWidget

define(
    [
      'jquery'
    , 'jsRender'
    , 'text!./templates.htm'
    ],
    function ($, jsRender, templates) {

        $('body').append(templates);

        function MyWidget(){
            this.widgetId = 0;
            this.name = 'Something Awesome';
        };

        return { MyWidget: MyWidget};
    });

更新:
テンプレートファイルは、(テンプレート用の)SCRIPTタグに他なりません。

4

1 に答える 1

1

相対モジュール ID は、パスではなく、参照 ID に対して相対的に解決されます。この場合、'myWidget' は './templates' を要求するため、モジュール ID 名前空間の一番上にある 'templates' だけに解決され、baseUrl の下で検索されます。プレイ中のパス構成。したがって、必要な解像度を得るために、おそらく「テンプレート」のパスエントリを入れることができます。

また、テキスト プラグインにはクロス ドメイン制限があることに注意してください: https://github.com/requirejs/text

于 2013-03-01T21:53:43.260 に答える