2016-10-17 10 views
1

多くのNPMパッケージを使用するDojoプロジェクトに取り組んでいます。その1つはbluebirdで、IEでPromiseを使用する必要があります。私は、プロジェクトにNPMパッケージをロードするためのベストプラクティス/推奨される方法を探しています。に示すようにAMDモジュールとしてDojoプロジェクトにbluebird(NPMから取得)をロードする方法は?

require([ 
 
    'dojo/dom', 
 
    'dojo/request', 
 
    'dojo/domReady!' 
 
], function(dom, request) { 
 

 
    var message = dom.byId('greeting'); 
 
    message.innerHTML = "Getting started"; 
 

 
    var p1 = new Promise(function(resolve, reject) { 
 
    setTimeout(function() { 
 
     resolve(true); 
 
    }, 1000); 
 
    }); 
 

 
    var p2 = new Promise(function(resolve, reject) { 
 
    setTimeout(function() { 
 
     resolve(true); 
 
    }, 1000); 
 
    }); 
 

 
    var p3 = new Promise(function(resolve, reject) { 
 
    setTimeout(function() { 
 
     resolve(true); 
 
    }, 1000); 
 
    }); 
 

 
    Promise.all([p1, p2, p3]).then(function() { 
 
    message.innerHTML = "All requests have been completed"; 
 
    }, function(error) { 
 
    message.innerHTML = error; 
 
    }); 
 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/bluebird/1.2.2/bluebird.js"></script> 
 
<script src="https://ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js" data-dojo-config="async: true"></script> 
 
<div id="greeting"></div>

は、IE11でコードを実行するためには、私は(<script>タグを通じて青い鳥ライブラリをロードすることができます

次のコードは、私の質問を示す一例ですコード)。しかし、NPMでライブラリを管理したい場合、タグを使用してディスク内のnode_modulesフォルダからライブラリをロードするか、node_modulesフォルダからdojoConfigまでライブラリを参照するか、いずれにしてもnode_modulesフォルダに入り、そのパッケージを参照する必要があります。そうすることが推奨されるかどうかわからないのですか?例えば、CommonJSは明らかにそうするように、NOT示唆:http://requirejs.org/docs/node.html

使用NPMは、プロジェクトにノードのみのパッケージ/モジュールをインストールするディレクトリをnode_modulesが、node_modulesディレクトリ内見てRequireJSを設定しないでください。また、相対的なモジュールIDを使用して、ノードのみのモジュールであるモジュールを参照することも避けてください。その物理的な経路を通ってnode_modulesフォルダに存在する(「./ node_modules/fooの/ foo」という

私は、ライブラリ(または任意の他のNPMのパッケージを参照するべきではない場合)が必要なようなので、何かをしていない、ありますそこにそうするためのより良い方法はありますか?私は道場のrequire([])呼び出しは最高の場所かもしれないが、私はそうする方法を正確に確認していないで、それをロードすることを考えています。

任意の助けが理解されるであろう。

答えて

0

あなたはnpmインストールまたはbowerを使用してプロジェクトのバラードをプルすることができます thirdpartyライブラリがdojoと互換性のあるAMDにない場合あなたが使用することができます。

define([...,"path/to/thirdparty.js"], function(){ 
    // ... your code 
}); 

または使用:

require([...,"path/to/thirdparty.js"]) 

注:

  • あなたは<script>でライブラリをロードする必要はありません、あなたのようにあなたのためにそれをロードするために道場を使用することができます上記のスニペットで
関連する問題