【ES6系列】Module 模块化

一、导入导出变量

// 导出变量
export const name = 'hello' // 导出变量
export let addr = 'beijing'
export var list = [1, 2, 3]

// 导入变量
import { name, addr, list} from './js-mod'
// 导出变量
const name = 'hello'
let addr = 'beijing'
let list = [1, 2, 3, 5]
export {
  name,
  addr,
  list
}

// 导入变量
import { name, addr, list} from './js-mod'

默认导出的变量不能包含在{}里,默认导出模块允许导入时自定义名称,一个文件只能默认导出一个模块。

// 导出默认变量
const name = 'hello'
let addr = 'beijing'
let list = [1, 2, 3, 5]
export default name
export {
  addr,
  list
}

// 导入默认变量和普通变量
import name, { // 默认导出的变量不能包含在{}里,默认导出模块允许导入时自定义名称
  addr as newAddr, // 导入时可以用 as 关键字为导出的模块重命名/指定别名
  list
} from './js-mod'

二、导入导出函数

// 导出方法 - say 是默认导出模块
export default function say(content) {
  console.log(content)
}
export function run() {
  console.log('I am running');
}

// 导入方法 - say 是默认导出模块
import
say, { run } from "./js-mod";
// 导出函数
const say = (content) => {
  console.log(content)
}
const run = () => {
  console.log('I am running')
}
export default say
export {
  run
}

// 导入方法 - say 是默认导出模块
import
say, {
  run
} from "./js-mod";
say('hello world')
run()

三、导入导出对象

// 导出对象 - 导出多个对象
const info = {
  name: 'er',
  age: 7
}
const des = {
  age: 22,
  addr: 'Beijing'
}

export default {
  info,
  des
}

// 导入对象
import obj from './js-mod'
let { info, des } = obj // 解构赋值

四、导入导出类

// 导出类-默认导出
class Test {
  constructor() {
    this.id = 5
  }
}
export default Test

// 导入类-默认导入
import Test from './js-mod'
let test = new Test()
console.log(test.id)
// 直接默许导出类
export default class { // 可省略类名。如果非默认导出不能省略类名
  constructor() {
    this.id = 7
  }
}

// 导入类
import Test from './js-mod' // 非默认导出Test需包含在{}里
let test = new Test()
console.log(test.id)

导入导出多个类

// 导出多个类
export class Test {
  constructor() {
    this.id = 7
  }
}
export class Animal {
  constructor() {
    this.name = 'dog'
  }
}
export default class People {
  constructor() {
    this.id = '778'
  }
}

// 导入多个类
import * as Mod from './js-mod'
let test = new Mod.Test() // 注意引用通过Mod
console.log(test.id)
let animal = new Mod.Animal() // 注意引用通过Mod
console.log(animal.name)
let people = new Mod.default() // 注意:默认导出的类的引用链,不能通过类名调用
console.log(people.id)

 思考:被导出的模块是否能在本模块引用?

被导出模块可以在本模块引用,示例如下:

// 导出函数
export function say() {
  console.log('say')
}
export function run() {
  say()
}

// 导入函数
import {
  run
} from './js-mod'
run() // 'say'

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值