1. 模块化的目的:
- 解决全局变量污染
- 解决变量重名
- 解决文件依赖顺序
2. 模块化命令:
1. export: 规定模块的对外接口
- export default 只能使用一次,export可以使用多次
- export default 不能跟变量声明语句,错误示例:
export default var a=10; - export 导出要指定对外接口
- export 和 export default 可以一起使用
1. 定义后导出变量/常量/函数为模块
const name = 'hello'let addr = 'BeiJing City'var list = [1, 2, 3]const say = (content) => { console.log(content)}let run = () => { console.log('run')}export { name, addr, list, say, run}
2. 分别导出变量/常量/函数为模块
export const name = 'hello'export let addr = 'BeiJing City'export var list = [1, 2, 3]export function say(content) { console.log(content)}export function run() { console.log('run')}
3. 导出对象为模块
1. 定义后导出模块
let data = { code: 0, message: 'success'}export { data}
2. 直接导出模块
export ({ code: 0, message: 'success'})
4. 导出类(Class)
1. 定义后导出模块
class Test { constructor() { this.id = 2 }}export { Test}
2. 直接导出模块
export class Test { constructor() { this.id = 2 }}
5. 重命名(as)后导出模块
const name = 'hello'let addr = 'BeiJing City'var list = [1, 2, 3]export { name as cname, addr as caddr, list}
6. 方便快速使用(export default)导出模块
const name = 'hello'let addr = 'BeiJing City'var list = [1, 2, 3]export { name as cname, addr as caddr}export default list
2. import: 输入其他模块提供的功能
- 导入的值为只读状态
- 导入的对象可以修改属性,但不推荐
导入2-1-6模块
import list, { cname, caddr} from A
修改导入的名称
import list, { cname as name, caddr} from A
批量导入
import list, * as mod from A console.log(list) console.log(mod.cname) console.log(mod.caddr)