新闻资讯

ES6模块化导出导入的几种方式

2026-03-16

方式一:分别导出
export const user = { name: 'Alice', age: 25 };
export const config = { theme: 'dark', lang: 'zh' };
export const tools = { debug: true };
接收方式1:
import { user, config, tools } from './data.js';
输出:
console.log(user);
console.log(config);
console.log(tools);
接收方式2:
import * as mydata from './data.js';
输出:
console.log(mydata);
console.log(mydata.user);
console.log(mydata.config);
console.log(mydata.tools);


方式二:统一批量导出
const user = { name: 'Alice' };
const config = { theme: 'dark' };
export { user, config }; // 这里不是对象字面量,是导出引用列表
接收方式1:
import { user, config } from './data.js';
输出:
console.log(user);
console.log(user.name);
console.log(config);
console.log(config.theme);
接收方式2:
import * as mydata from './data.js';
输出
console.log(mydata);
console.log(mydata.user);
console.log(mydata.config);


方式三:统一批量导出
导入: 不使用花括号,且可以随意命名。
const calculator = {
  add: (a, b) => a + b
};
export default calculator; // 导出整个对象作为默认项
接收方式1:
// 即使导出时叫 calculator,导入时我可以叫它 math
import math from './tools.js'; 
console.log(math.add(1, 2)); // 3
接收方式2:注意:mydata.default中default不能少
import * as mydata from './data.js';
console.log(mydata.default.add(1, 2)); // 3

只有当你使用 通配符导入 (import * as) 或者 动态导入 (import()) 时,JS 才会把整个模块包装成一个大对象,此时 default 才会作为该对象的一个属性出现。