繁体   English   中英

如何将bluebird(从NPM中提取)作为AMD模块加载到Dojo项目中?

[英]How to load bluebird (pulled from NPM) into a Dojo project as an AMD module?

我正在开发一个使用多个NPM包的Dojo项目,其中一个是蓝鸟,因为我需要在IE中使用Promise。 我正在寻找将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>标记加载bluebird库(如代码所示)。 但是,如果我想通过NPM管理库,我知道我可以通过npm install ,然后使用<script>标签从我的磁盘中的node_modules文件夹加载库,或者从node_modules文件夹引用库通过dojoConfig ,但无论哪种方式,我都需要点击node_modules文件夹并在那里引用包。 我不确定是否甚至建议这样做? 例如,CommonJS明确建议不要这样做: http ://requirejs.org/docs/node.html:

使用npm将仅包含节点的软件包/模块安装到项目node_modules目录中,但不要将RequireJS配置为查看node_modules目录。 还要避免使用相关模块ID来引用仅为节点模块的模块。 所以,不要做像需要的东西(“./ node_modules / foo / foo”

如果我不应该通过其物理路径引用驻留在node_modules文件夹中的库(或任何其他NPM包),有更好的方法吗? 我正在考虑在Dojo中加载它的require([])调用可能是最好的地方,但我不确定如何这样做。

任何帮助将不胜感激。

您可以使用npm install或bower来拉入您的项目blubird。 如果您的第三方库不在与dojo兼容的AMD中,您可以使用:

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

或使用:

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

笔记:

  • 您不需要使用<script>加载库,您可以使用dojo为您加载它,如上面的代码片段所示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM