【问题标题】:How to load bluebird (pulled from NPM) into a Dojo project as an AMD module?如何将 bluebird(从 NPM 中提取)作为 AMD 模块加载到 Dojo 项目中?
【发布时间】:2016-10-17 20:41:34
【问题描述】:

我正在做一个 Dojo 项目,它使用了许多 NPM 包,其中一个是 bluebird,因为我需要在 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中运行代码,我可以通过&lt;script&gt;标签加载bluebird库(如代码所示)。但是,如果我想通过 NPM 管理库,我知道我可以通过 npm install 拉取它,然后使用 &lt;script&gt; 标记从磁盘中的 node_modules 文件夹加载库,或者从node_modules 文件夹到 dojoConfig,但无论哪种方式,我都需要进入 node_modules 文件夹并在那里引用包。我不确定是否建议这样做?例如,CommonJS 明确建议不要这样做:http://requirejs.org/docs/node.html

使用 npm 将仅 Node 的包/模块安装到项目 node_modules 目录中,但不要将 RequireJS 配置为查看 node_modules 目录。还要避免使用相对模块 ID 来引用仅节点模块的模块。所以,不要做类似 require("./node_modules/foo/foo"

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

任何帮助将不胜感激。

【问题讨论】:

    标签: npm dojo bluebird amd


    【解决方案1】:

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

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

    或使用:

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

    注意事项:

    • 您不需要使用&lt;script&gt; 加载库,您可以使用dojo 为您加载它,如上面的sn-p。

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多