首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >成员-cli中的导入依赖项(例如,导入math.js)

成员-cli中的导入依赖项(例如,导入math.js)
EN

Stack Overflow用户
提问于 2015-05-25 17:34:24
回答 1查看 2.1K关注 0票数 10

我困惑于导入成员-cli中的依赖项,特别是标准的AMD案例,正如在官方Ember Cli文件中提到的。这份文件并没有提供太多的例子,在我看来,它似乎假设读者对AMD有很好的了解,这对我来说不是这样的。我的直接用例是导入math.js。不幸的是,math.js正式文件没有提供有关使用Ember导入的示例。然后,我发现这个职位中有一些比较清晰的例子,特别是下面的例子似乎非常相关。

代码语言:javascript
复制
app.import({
  development: 'vendor/lodash/dist/lodash.js',
  production:  'vendor/lodash/dist/lodash.min.js'
}, {
  'lodash': [
    'default'
  ]
}); 

然后,我对math.js做了类似的事情,如下所示:

代码语言:javascript
复制
app.import({
  development: 'bower_components/mathjs/dist/math.js',
  production:  'bower_components/mathjs/dist/math.min.js'
}, {
  'mathjs': [
    'default'
  ]
});

但是,它不起作用。当我试着用它

代码语言:javascript
复制
import mathjs from 'mathjs'

我有个错误。最后,我使用了以下解决方案:

代码语言:javascript
复制
// Brocfile.js
app.import('bower_components/mathjs/dist/math.min.js');

// some controller.js
var math = window.math

虽然上面的解决方案有效,但我不喜欢它,因为它可能会受到名称冲突的影响。此外,基于math.js的文档,我认为它应该支持标准的AMD类型的导入。

因此,我的问题如下。

  1. 在上面的lodash示例中,'default'是什么意思?这是对相应模块中导出的任何内容的一般引用吗?我如何判断我是否可以在一般情况下使用它(例如,math.js)?
  2. 如果一个模块支持require.js,那么它就是一个标准的AMD模块,这是真的吗?如果是这样的话,给出如下代码:
代码语言:javascript
复制
require.config({
  paths: {
    mathjs: 'path/to/mathjs',
  }
});
require(['mathjs'], function (math) {
  // use math.js
  math.sqrt(-4); // 2i
});

如何将其映射到Ember Cli代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-01 22:56:59

这有点痛苦,但是由于mathjs不公开/支持命名的AMD模块,所以不能在app.import中使用额外的语法。

你有两个选择:

  1. 余烬-褐化 (如果库支持CommonJS - mathjs支持)
  2. “擦”你自己的附属图书馆

1.成员-褐化

  1. 安装ember褐变 ember install ember-browserify
  2. 将CommonJS库安装为NPM包 npm install --save-dev mathjs
  3. 使用具有常规import语法的NPM包 import mathjs from 'npm:mathjs';

2.轻拍

您需要做的是“使用”库,以便通过import语句提供它。我仍然不知道shim这个词是什么意思。

如果您对创建保龄球包感兴趣,例如ember-cli-mathjs-shim,那么您可以使用它,并赋予其他人使用它的能力。这方面的一些例子是:

ember-cli-shims

ember-cli-moment-shim

ember-cli-sockjs-shim

但是,如果您不喜欢这样做,我建议在您的项目中添加以下内容:

vendor/shims/math.js --在vendor下创建一个shims文件夹(供应商是您的依赖方不来自NPM或Bower的地方--而Brocfile似乎无法从这里以外的任何地方获得app.import --例如,根级的app/shims或简单shims无法工作)

vendor/shims/math.js

代码语言:javascript
复制
(function() {
  /* globals define, math */

  function mathJSModule() {
    'use strict';

    return { 'default': math };
  }

  define('mathjs', [], mathJSModule);

})();

Brocfile.js

代码语言:javascript
复制
app.import('bower_components/mathjs/dist/math.js');
app.import('vendor/shims/math.js', {
  exports: {
    'mathjs': [ 'default' ]
  }
});

这里的命令很重要。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30443351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档