1. 模块化的目的:

  1. 解决全局变量污染
  2. 解决变量重名
  3. 解决文件依赖顺序

    2. 模块化命令:

    1. export: 规定模块的对外接口

    1. export default 只能使用一次,export可以使用多次
    2. export default 不能跟变量声明语句,错误示例: export default var a=10;
    3. export 导出要指定对外接口
    4. export 和 export default 可以一起使用

1. 定义后导出变量/常量/函数为模块

  1. const name = 'hello'
  2. let addr = 'BeiJing City'
  3. var list = [1, 2, 3]
  4. const say = (content) => {
  5. console.log(content)
  6. }
  7. let run = () => {
  8. console.log('run')
  9. }
  10. export {
  11. name,
  12. addr,
  13. list,
  14. say,
  15. run
  16. }

2. 分别导出变量/常量/函数为模块

  1. export const name = 'hello'
  2. export let addr = 'BeiJing City'
  3. export var list = [1, 2, 3]
  4. export function say(content) {
  5. console.log(content)
  6. }
  7. export function run() {
  8. console.log('run')
  9. }

3. 导出对象为模块

1. 定义后导出模块
  1. let data = {
  2. code: 0,
  3. message: 'success'
  4. }
  5. export {
  6. data
  7. }

2. 直接导出模块

  1. export ({
  2. code: 0,
  3. message: 'success'
  4. })

4. 导出类(Class)

1. 定义后导出模块
  1. class Test {
  2. constructor() {
  3. this.id = 2
  4. }
  5. }
  6. export {
  7. Test
  8. }

2. 直接导出模块
  1. export class Test {
  2. constructor() {
  3. this.id = 2
  4. }
  5. }

5. 重命名(as)后导出模块

  1. const name = 'hello'
  2. let addr = 'BeiJing City'
  3. var list = [1, 2, 3]
  4. export {
  5. name as cname,
  6. addr as caddr,
  7. list
  8. }

6. 方便快速使用(export default)导出模块

  1. const name = 'hello'
  2. let addr = 'BeiJing City'
  3. var list = [1, 2, 3]
  4. export {
  5. name as cname,
  6. addr as caddr
  7. }
  8. export default list

2. import: 输入其他模块提供的功能

  1. 导入的值为只读状态
  2. 导入的对象可以修改属性,但不推荐

导入2-1-6模块

  1. import list, {
  2. cname,
  3. caddr
  4. } from A

修改导入的名称

  1. import list, {
  2. cname as name,
  3. caddr
  4. } from A

批量导入

  1. import list, * as mod from A
  2. console.log(list)
  3. console.log(mod.cname)
  4. console.log(mod.caddr)