我困惑于导入成员-cli中的依赖项,特别是标准的AMD案例,正如在官方Ember Cli文件中提到的。这份文件并没有提供太多的例子,在我看来,它似乎假设读者对AMD有很好的了解,这对我来说不是这样的。我的直接用例是导入math.js。不幸的是,math.js正式文件没有提供有关使用Ember导入的示例。然后,我发现这个职位中有一些比较清晰的例子,特别是下面的例子似乎非常相关。
app.import({
development: 'vendor/lodash/dist/lodash.js',
production: 'vendor/lodash/dist/lodash.min.js'
}, {
'lodash': [
'default'
]
}); 然后,我对math.js做了类似的事情,如下所示:
app.import({
development: 'bower_components/mathjs/dist/math.js',
production: 'bower_components/mathjs/dist/math.min.js'
}, {
'mathjs': [
'default'
]
});但是,它不起作用。当我试着用它
import mathjs from 'mathjs'我有个错误。最后,我使用了以下解决方案:
// Brocfile.js
app.import('bower_components/mathjs/dist/math.min.js');
// some controller.js
var math = window.math虽然上面的解决方案有效,但我不喜欢它,因为它可能会受到名称冲突的影响。此外,基于math.js的文档,我认为它应该支持标准的AMD类型的导入。
因此,我的问题如下。
lodash示例中,'default'是什么意思?这是对相应模块中导出的任何内容的一般引用吗?我如何判断我是否可以在一般情况下使用它(例如,math.js)?require.config({
paths: {
mathjs: 'path/to/mathjs',
}
});
require(['mathjs'], function (math) {
// use math.js
math.sqrt(-4); // 2i
});如何将其映射到Ember Cli代码?
发布于 2015-06-01 22:56:59
这有点痛苦,但是由于mathjs不公开/支持命名的AMD模块,所以不能在app.import中使用额外的语法。
你有两个选择:
1.成员-褐化
ember install ember-browserifynpm install --save-dev mathjsimport语法的NPM包
import mathjs from 'npm:mathjs';2.轻拍
您需要做的是“使用”库,以便通过import语句提供它。我仍然不知道shim这个词是什么意思。
如果您对创建保龄球包感兴趣,例如ember-cli-mathjs-shim,那么您可以使用它,并赋予其他人使用它的能力。这方面的一些例子是:
但是,如果您不喜欢这样做,我建议在您的项目中添加以下内容:
vendor/shims/math.js --在vendor下创建一个shims文件夹(供应商是您的依赖方不来自NPM或Bower的地方--而Brocfile似乎无法从这里以外的任何地方获得app.import --例如,根级的app/shims或简单shims无法工作)
vendor/shims/math.js
(function() {
/* globals define, math */
function mathJSModule() {
'use strict';
return { 'default': math };
}
define('mathjs', [], mathJSModule);
})();Brocfile.js
app.import('bower_components/mathjs/dist/math.js');
app.import('vendor/shims/math.js', {
exports: {
'mathjs': [ 'default' ]
}
});这里的命令很重要。
https://stackoverflow.com/questions/30443351
复制相似问题