我正在尝试迁移一个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.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.
我明白为什么这是,知道我需要某种进口会计从…声明.
如何导入通过bower安装的软件包作为ES6模块?
解决方法
我知道这是在几个月前被问到的,但从那时起,Ember App Kit已经被
ember-cli接管,这提供了一个非常直接的方法来访问bower或npm依赖关系.
关于作为ES6模块访问:
>非AMD资产无法作为ES6模块访问,您只需通过导出的全局变量访问它们.
>例如时刻
另一方面,AMD资产可以通过ES6导入语法进行访问
>例如从“ic-ajax”导入{raw as icAjaxRaw};
值得一提的是,ember-cli现在支持一个附加系统,可以将这些东西简单地导入到将其添加到项目的package.json中.一些更受欢迎的图书馆已经有了ember-cli插件. This post描述了如何编写自己的.