javascript模块化依赖export/import语法,需在type="module"环境中运行;命名导出适合多个变量,用花括号按名导入;默认导出仅一个,可自定义导入名;支持混合导出;导出为实时绑定,须带.js后缀且import不可嵌套。

JavaScript 中模块化变量的导出与导入,核心靠 export 和 import 语法,必须在 type="module" 的脚本环境中使用,不能在普通 script 中直接运行。
命名导出变量(推荐用于多个变量)
适合导出多个具名变量,导入时需用花括号精确匹配名称。
- 导出方式一:声明时直接加
export
// utils.js
export const API_URL = 'https://api.example.com';
export const MAX_RETRY = 3;
export const IS_DEV = true;
```
- 导出方式二:统一在文件末尾批量导出(可起别名)
// config.js
const BASE_PATH = '/app';
const TIMEOUT = 5000;
export { BASE_PATH, TIMEOUT };
// 或起别名:
// export { BASE_PATH as ROOT, TIMEOUT as DEFAULT_TIMEOUT };
```
- 导入方式:按名导入,名称必须一致
// main.js
import { API_URL, MAX_RETRY } from './utils.js';
console.log(API_URL); // https://api.example.com
```
默认导出变量(适合单个主配置)
每个模块只能有一个 export default,导入时可自定义任意名称,无需花括号。
- 导出一个字面量或常量
// env.js
export default {
mode: 'production',
version: '2.4.1'
};
```
- 导入时自由命名
// app.js
import ENV from './env.js';
console.log(ENV.mode); // production
```
混合导出与导入(兼顾灵活性和清晰性)
一个模块中可同时有命名导出 + 默认导出,适用于既要暴露多个工具变量、又提供一个主对象的场景。
- 导出示例
// constants.js
export const STATUS_OK = 200;
export const STATUS_ERR = 500;
export default {
name: 'AppConstants',
prefix: 'APP_'
};
```
- 导入写法:默认导入放前面,命名导入用花括号跟在后面
// index.js
import APP, { STATUS_OK, STATUS_ERR } from './constants.js';
console.log(APP.name); // AppConstants
console.log(STATUS_OK); // 200
```
注意事项与常见陷阱
变量导出是“实时绑定”,不是值拷贝——如果导出的是 let 或 var 变量,且原模块后续修改了它的值,导入方读取时会反映最新值(const 不可重赋值,但若导出对象,其属性仍可修改)。
- 必须使用
.js扩展名(Node.js 和现代浏览器均要求显式后缀) - HTML 中引用模块脚本需加
type="module":<script type="module" src="main.js"></script> -
import只能在顶层作用域,不能放在 if 或函数内(动态导入import()除外) - 命名导入的名称必须与导出名完全一致,大小写敏感
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











