我正在尝试迁移ember应用程序使用Ember App-kit。代码需要Accounting.js库。在预贴上版本中,该文件是通过 index.html
<script src="http://cdnjs.cloudflare.com/ajax/libs/accounting.js/0.3.2/accounting.min.js"></script>
并通过全局名称空间在视图中访问
App.MoneyField= Em.TextField.extend({
init: function() {
this._super();
var value = accounting.formatMoney(this.get("money") / 100, '');
this.set('value', value);
};
// other functions omitted
});
在App-Kit版本中,我将accounting.js
作为Bower依赖性。在bower.json
中:
{
"name": "ember-app-kit",
"dependencies": {
"handlebars": "~1.1.2",
"jquery": "~1.9.1",
"qunit": "~1.12.0",
"ember": "~1.4.0-beta.2",
"ember-data": "~1.0.0-beta.6",
"ember-resolver": "git://github.com/stefanpenner/ember-jj-abrams-resolver.git#master",
"ic-ajax": "~0.3.0",
"ember-testing-httpRespond": "~0.1.1",
"accounting":"~0.3.2"
},
"resolutions": {
"ember": "~1.4.0-beta.2"
}
}
当我尝试构建应用程序时,它给出了错误
W117: 'accounting' is not defined.
我明白为什么这是并且知道我需要某种import accounting from ...
语句。
如何导入通过Bower安装的ES6模块安装的软件包?
我知道这是几个月前问的,但是从那以后,Ember App套件已由Ember-CLI继承,这提供了非常直接的手段,可以访问Bower或npm依赖项。
- 非AMD资产
- AMD资产
作为ES6模块访问:
- 非AMD资产无法作为ES6模块访问,您只需通过其导出的全局变量访问它们即可。
- 例如。
moment
另一方面,可以通过ES6 - 例如。
- AMD资产
- 例如。
import { raw as icAjaxRaw } from 'ic-ajax';
- 例如。
import
语法访问还值得一提的是,Ember-CLI现在支持一个附加系统,这可以使导入这些内容与将它们添加到项目的package.json
一样简单。一些更受欢迎的图书馆已经为它们提供了Ember-CLI插件。这篇文章描述了您如何写自己的文章。