0

次の方法で(requirejsを介して)(最新バージョンの)ダストおよびダストヘルパーをロードしています

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        ... //my other dust custom helpers
    });
});

すべてうまく機能します - ダスト/ダストヘルパー ロジックを利用できます。しかし、ヘルパーの場合はダストモートを活用したいと思い、次のことを試しました

define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        require(["./Scripts/dustmotes-if"], function () {
            ... //my other dust custom helpers
        });
    });
});
  • ただし、「require(["./Scripts/dustmotes-if"], function () {"」行に到達し、「他のダスト カスタム ヘルパー」を実行するために中に入ることなく、最後 (閉じ中括弧) までスキップします。 . メモ ファイル パスが正常であることを確認しました。

また、「require(["./Scripts/dustmotes-if"], function () {"」ロジックを削除して、単に「require(["./Scripts/dustmotes-if"]);」に置き換えてみました。コードは実行されますが、'if' ヘルパーはヘルパー コレクションに読み込まれないため、ダスト コードで 'if' ヘルパーを参照すると、"ヘルパー 'if' が存在しません" という結果になります。

誰かがこれを試したことがありますか、何かアイデアがありますか。http://www.dustjs.com/の参照は、上記のシナリオを実際にはカバーしていません。同様に、オンラインのドキュメント/フォーラム投稿の多くは、dustjs および requirejs の古いバージョンを参照しています。

4

1 に答える 1

0

この問題は、@Interrobang が提案したように、IIFE としてロードする必要があるというものでした。

注意すべき点

  • IIFE は独自のスコープ内で実行され、ダスト オブジェクトをパラメーターとして渡す必要があるため、ダスト オブジェクトをウィンドウ オブジェクトに割り当てました (以下を参照)。
  • Dustmotes-if は古いバージョンのダスト ライブラリを参照していたため、"...require('dustjs-linkedin')..." から "...require('dust-full') に変更する必要がありました。 ..」。

したがって、最終的なコードは次のようになりました

...
define.amd.dust = true;
require(["./Scripts/dust-full"], function (dust) {
    require(["./Scripts/dust-helpers"], function () {
        window.dust=dust;
        $.getScript("./Scripts/dustmotes-if.js")
        .done(function(script,textStatus) {
            console.log(textStatus);
        })
        .fail(function(jqxhr,settings,exception) {
            console.log('Triggered ajaxError handler:'+exception.message);
        });
        ...

そして、dustmotes-if.js で

...
})(typeof exports !== 'undefined' ? module.exports = require('dust-full') : dust);
于 2016-05-14T07:57:22.140 に答える