需要EcmaScript 6模块,它是如何工作的?

时间:2015-02-07 21:46:16

标签: javascript node.js ecmascript-6 aurelia commonjs

所以我知道如何在ES6中要求和导出模块。但对于像Aurelia这样的框架,文档说您需要aurelia,如下所示:

import {LogManager} from 'aurelia-framework';

我是否必须将一个名为aurelia-framework的JS文件放在我执行它的JS文件所在的文件夹中,或者import函数是否与{{1}类似? NodeJS / CommonJS中的函数?

2 个答案:

答案 0 :(得分:3)

根据this article ES6模块规范仅涉及加载文件路径中存在的模块。下载这些文件(通过NPM或其他方式)超出了ECMAScript 6 modules spec的范围。关于支持npm包的规范中没有说什么(将目录结构遍历到/,一次一个目录,查找package.json文件,然后在node_modules内搜索找到package.json文件的目录。因此,虽然import语法类似于commonJS样式,但不包括在node_modules目录中查找模块的全部魔力。

因此,要使您的示例正常工作,aurelia-framework必须是文件系统中某处的javascript文件,并且应包含exports语句。

import {LogManager} from 'aurelia-framework'; // ./aurelia-framework.js
import {LogManager} from '../libs/aurelia-framework'; // ../libs/aurelia-framework.js

答案 1 :(得分:0)

使用Aurelia,您可以安装依赖库using jspm。你可以看到an example of that here。 jspm将为您获取包并将它们带入项目的子文件夹中。 jspm使用索引(存储在config.js中)来知道文件的位置(类似于requirejs,但适用于amd,commonjs和es6模块)。

还有an example使用带有requirejs amd加载器的aurelia库。此示例使用由r.js as shown here

生成的一组aurelia库