export 输出变量、函数、类
import 语句需要使用大括号。// 1.
export var xxx = 123;
export var yyy = 'aaa';
export function multiply(x, y) {
return x * y;
};
export const multiply = (x, y) { }
// 2.
var xxx = 123;
var yyy = 'aaa';
function multiply(x, y) {
return x * y;
}
export { xxx, yyy, multiply };
// 3. 别名
export { multiply as ccc };
// 4. 错误
export 1;
var m = 1;
export m; // 应该写成 export {m};
import 输入其他模块提供的功能
// 1.
import { xxx, yyy, multiply } from "./profile.js";
// 2. 别名
import { xxx as surname } from "./profile.js";
// 3. 整体加载 *
import * as circle from "./circle";
//可以改写 import 变量类型为对象的属性值,不能改写 import 变量类型为基本类型的值。
import { a } from "./xxx.js";
a = {}; // error
import { a } from "./xxx.js";
a.foo = "hello"; // a = { foo : 'hello' }
export default 命令,为模块指定默认输出。
import 语句不需要使用大括号;// 1.
export default function () {
console.log('foo');
}
// 2.
function foo() {
console.log('foo');
}
export default foo;
// 3. 不能跟变量声明语句
export default var a = 1; // 错误
export var a = 1; // 正确
// 4. 直接将一个值写在后面
export default 42; // 正确
export 42; // 报错
export 与 import 可以在同一模块使用,使用特点:
// 1. 输入默认方法
import customName from "./export-default";
// 2. 同时输入默认方法和其他接口
//
export default function (obj) {}
export function each(obj, iterator, context) {}
export { each as forEach };
//
import _, { each, forEach } from "lodash";
// modules.js
function add(x, y) {
return x * y;
}
export { add as default };
// 等同于
// export default add;
// app.js
import { default as foo } from "modules";
// 等同于
// import foo from 'modules';
// export 与 import 的复合写法
// 如果在一个模块之中,先输入后输出同一个模块,import语句可以与export语句写在一起。
// 写成一行以后,foo和bar实际上并没有被导入当前模块,只是相当于对外转发了这两个接口,导致当前模块不能直接使用foo和bar。
export { foo, bar } from "my_module";
// 可以简单理解为
import { foo, bar } from "my_module";
export { foo, bar };
// 整体输出
export * from "my_module";
import(./xxx.js)