1

簡単な質問です。

AMD DOJO 実装は、これらのタイプの宣言をサポートしていますか?

  1. テキスト!./plain.html

    define(["../Widget","text!./plain.html"],
      function(Widget,plain){
      return new Widget({name:"mainApp",template:plain});
    }); 
    
  2. 非モジュールをロードします。たとえば、underscore.js としましょう

    require(['dir/underscore.js'], function(){
     _.reduce ...
    });
    
4

1 に答える 1

2

はい。ただし、正確な構文は質問で使用されているものとは異なります。

文字データを読み込むためのプラグインはdojo/text.

JavaScript ライブラリーをロードし、ファイルの場所が dojotoolkit ベースの相対または dojoConfig のパッケージの 場所の宣言のいずれかを介して設定されている場合は、拡張子を使用しないでください。

require(['underscore'], function( _ ){
 _.reduce ...
});

煩雑なインポート パスを避けるために、Dojo 構成で名前空間を構成しますdojoConfig。ローダーのドキュメントを参照してください。

また、dojo/globalモジュールを使用したり、Dojo モジュールを Underscore.js のラッパーとして定義したりすることも検討してください。

//_.js
define(['dojo/global', 'underscore'], function(global){
  return global._
});

上記の考慮事項により、実際の .js ファイルを手動でロードしている必要があります。dojo/text プラグインと組み合わせて、必要な JS をロードして評価するラッパーを作成する場合は、次の方法でうまくいく可能性があります。

/var/www/dojo-release-1.7/ext_lib/_.js - このサンプル ファイルは、dojo、dijit、dojox と並んでライブラリ名前空間に階層的に配置されています。

define(['dojo/global', 'dojo/text!./Underscore.js'], function(global, scriptContents){
  global.eval(scriptContents);
  return global._ // '_' is the evaluated reference from window['_']
  /** 
   * Alternatively, wrap even further to maintain a closure scope thus hiding _ from global
   *  - so adapt global.eval to simply eval
   *  - remove above return statement
   *  - return a dojo declared module with a getInstance simple method
  */
  function get_ () { return _ };
  var __Underscore = declare('ext_lib._', [/*mixins - none*/], {
        getInstance: get_
  });
  // practical 'static' reference too, callable by 'ext_lib.getInstance' without creating a 'new ext_lib._'
  __Underscore.getInstance = get_;
  return __Underscore;
});

declare here を使用して独自のモジュールを定義するサンプル注: このコードはテストされていません。自由に修正を加えてください。

于 2012-07-15T20:08:42.237 に答える