export default 和 export、module.exports 和 exports

export default 和 export

ES6 使用 export 和 import 來導出、導入模塊

export default

可以使用自己默認定義的命名,優雅好看,但是單個文件只可默認暴露一次數據

  • fun.js
let a = {
  name: 'bob'
}

export default a
  • main.js
import obj from './fun'

console.log(obj)// {name: "bob"}
export

每次接收都需要按指定的命名暴露,但是單個文件可暴露多組數據

  • fun.js
export let a = {
  name: 'bob'
}

export let b = {
  name: 'lucy'
}
  • main.js
import { a, b } from './fun'

console.log(a)// {name: "bob"}
console.log(b)// {name: "lucy"}

當不想按指定的命名暴露,可用

  • fun.js
export let a = {
  name: 'bob'
}

export let b = {
  name: 'lucy'
}
  • main.js
import * as cc from './fun'

console.log(cc.a, cc.b)// {name: "bob"} {name: "lucy"}

module.exports 和 exports

Node 應用由模塊組成,採用 CommonJS 模塊規範,暴露數據的方式,爲了你方便,在每一個模塊中都提供了一個成員叫:exports

console.log(exports === module.exports)// true
module.exports
  • fun.js
let a = {
  a: 123,
  b: 456,
  c: 789
}

module.exports = a
  • main.js
let a = require('./fun')

console.log(a)// { a: 123, b: 456, c: 789 }
exports
  • fun.js
let a = {
  a: 123,
  b: 456,
  c: 789
}

exports.obj = a
  • main.js
let a = require('./cc2')

console.log(a)// { obj: { a: 123, b: 456, c: 789 } }

而實際用的時候:

  • 導出多個成員:exports.xxx = xxx
  • 導出多個成員也可以:module.exports = { a:xxx, b:xxx }
  • 導出單個成員:module.exports = 'hello'

注意:如果實在分不清 exports 和 module.exports,那就選擇忘記 exports,而只使用 module.exports 也沒問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章