我正在使用一些NPM軟件包的Dojo項目,其中一個是bluebird,因爲我需要在IE中使用Promise。我正在尋找最佳做法/推薦的方式將NPM軟件包加載到我的項目中。如何將Bluebird(從NPM中提取)作爲AMD模塊加載到Dojo項目中?
以下代碼是表示我的問題的例子:
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管理庫,我知道我可以通過npm install
,然後使用<script>
標記從我的磁盤中的node_modules
文件夾加載庫,或通過dojoConfig
從node_modules
文件夾引用庫,但無論哪種方式,我都需要進入node_modules
文件夾並在那裏引用包。我不確定是否建議這樣做?例如,CommonJS的明確建議不要這樣做:http://requirejs.org/docs/node.html:
使用NPM安裝節點只包/模塊到項目node_modules目錄,但不配置RequireJS看的node_modules目錄內。還應避免使用相關模塊ID來引用僅限Node的模塊。所以,不要做類似要求(居住在通過其物理路徑的
node_modules
文件夾「./ node_modules /富/富」
如果我不應該引用庫(或任何其他NPM包),是有沒有更好的方式來做到這一點?我想在Dojo的require([])
調用加載它可能是最好的地方,但我不完全知道如何做到這一點。
任何幫助將不勝感激。