如何作为ES6模块访问Bower软件包



我正在尝试迁移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 import语法访问
  • AMD资产
    • 例如。import { raw as icAjaxRaw } from 'ic-ajax';

还值得一提的是,Ember-CLI现在支持一个附加系统,这可以使导入这些内容与将它们添加到项目的package.json一样简单。一些更受欢迎的图书馆已经为它们提供了Ember-CLI插件。这篇文章描述了您如何写自己的文章。

相关内容

  • 没有找到相关文章

最新更新