在 JS 模塊化編程的模塊引入上, 主要有兩種方式:node
模塊引入:require()es6
模塊導出:exports 或者 module.exports編程
a.js(導出):babel
const name = 'cedric' exports.name = name
b.js(引入):模塊化
const a = require('./a.js') console.log(a) // { name: 'cedric' } // 或者 // const { name } = require('./a.js') // console.log(name) // 'cedric'
a.js(導出):函數
const name = 'cedric' module.exports = name
b.js(引入):ui
const name = require('./a.js') console.log(name) // 'cedric'
a.js(導出):code
const name = 'cedric' module.exports = { name }
b.js(引入):對象
const a = require('./a.js') console.log(a) // { name: 'cedric' } // 或者 // const { name } = require('./a.js') // console.log(name) // 'cedric'
exports
返回的是模塊函數,module.exports
返回的是模塊對象自己,返回的是一個類使用 exportsio
a.js:
const name = 'cedric' const age = 18 function fun () { console.log('abc') } exports.name = name exports.age = age exports.fun = fun
b.js:
const a = require('./a.js') a.fun() // abc console.log(a) // { name: 'cedric', age: 18, fun: [Function: fun] }
使用 module.exports
a.js:
const name = 'cedric' const age = 18 function fun () { console.log('abc') } module.exports = { name, age, fun, }
b.js:
const a = require('./a.js') a.fun() // abc console.log(a) // { name: 'cedric', age: 18, fun: [Function: fun] }
export
能夠有多個,export default
只能向外暴露一次export
方式導出,在導入時要加{ },export default
則不須要a.js(導出):
export const name = 'cedric' export function fun () { console.log('abc') }
導入:
import { name, fun } from './a' console.log(name) // cedric console.log(fun) // fun: [Function: fun] fun() // abc
a.js(導出):
function fun () { console.log('abc') } export default fun // 或者: // export default function fun () { // console.log('abc') // }
導入:
import fun from './a' console.log(fun) // fun: [Function: fun] fun() // abc
關於export default 中的 default
實際上,a.js 文件的 export default
輸出一個叫作 default
的變量,因此,當import
的模塊引入 a.js 時,系統容許你爲它取任意變量名。因此,以下通常會使用方式:
a.js(導出):
export default () => { console.log('abc') }
導入:
import 任意名稱 from './a' console.log(任意名稱) // () => { console.log('abc'); } 任意名稱() // abc