如何导入非amd库ember-cli

时间:2015-04-14 18:00:12

标签: ember.js ember-cli

我正在使用Ember-CLI,现在我遇到了在我的项目中导入AmplifyJS的问题。我使用Bower下载了Amplify,但该库不是ES6格式。因此,当我尝试在我的项目中使用它时,我根本无法导入它。

基本上我想做:

import Amplify from amplify;

//use amplify here

Brocfile.js

app.import('bower_components/amplify/lib/amplify.js');

由于许多图书馆尚未采用ES6格式,我的问题是:“有没有办法在ES6中轻松导入或使用ES5图书馆”。

如果没有,在Ember中推荐的方法是什么?

2 个答案:

答案 0 :(得分:1)

您不能import Amplify from amplify;,因为它不是模块。

你几乎得到了它,但只是没有尝试导入库。你需要将它作为一种全局的方式引用它,就像你在ember-cli应用程序之外那样。

来自文档:

  

提供资产路径作为第一个也是唯一的参数:

app.import('bower_components/moment/moment.js');
     

从这里你可以使用它的文档指定的包,通常是一个全局变量。在这种情况下,它将是:

import Ember from 'ember';
/* global moment */
// No import for moment, it's a global called `moment`

// ...
var day = moment('Dec 25, 1995');
     

注意:不要忘记通过向模块添加/* global MY_GLOBAL */或在.jshintrc文件的predefs部分中定义它来使JSHint满意。

     

- http://www.ember-cli.com/#standard-non-amd-asset

答案 1 :(得分:0)

如果您查看代码https://github.com/mikehostetler/amplify/blob/master/lib/amplify.js#L15的第15行,则库会将自身附加到global,并在此处传递https://github.com/mikehostetler/amplify/blob/master/lib/amplify.js#L124

所以基本上你可以直接使用像amplify.subscribe(...)

这样的全局版本的库