所以我知道如何在 ES6 中要求和导出模块。但是对于像Aurelia这样的框架,文档说你需要aurelia
这样:
import {LogManager} from 'aurelia-framework';
我是否必须将一个名为的 JS 文件放置aurelia-framework
在我从中执行它的 JS 文件所在的文件夹中,或者该import
函数的工作方式是否require
类似于 NodeJS/CommonJS 中的函数?
所以我知道如何在 ES6 中要求和导出模块。但是对于像Aurelia这样的框架,文档说你需要aurelia
这样:
import {LogManager} from 'aurelia-framework';
我是否必须将一个名为的 JS 文件放置aurelia-framework
在我从中执行它的 JS 文件所在的文件夹中,或者该import
函数的工作方式是否require
类似于 NodeJS/CommonJS 中的函数?
根据这篇文章ES6 模块规范仅处理加载文件路径中存在的模块。下载这些文件(通过 NPM 或其他方式)超出了ECMAScript 6 模块规范的范围。规范中没有提及支持 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
使用Aurelia ,您可以使用 jspm安装依赖库。你可以在这里看到一个例子。jspm 将为您获取软件包并将它们放入您项目的子文件夹中。jspm 使用索引(存储在 config.js 中)来了解文件的位置(类似于 requirejs,但适用于 amd、commonjs 和 es6 模块)。
还有一个将 aurelia 库与 requirejs amd 加载器一起使用的示例。此示例使用由 r.js 生成的 aurelia 库包,如下所示