exports与module.exports,export与export default 使用及其区别

待我称王封你为后i 2021-09-29 06:44 554阅读 0赞

exports 与 module.exports

  1. var cel = function(){
  2. console.log('cel')
  3. }
  4. var el = 20
  5. exports.cel = cel
  6. exports.el = el
  7. module.exports.el = 15
  8. module.exports = { //在es6中当 key和value 一样的时候可以只写一个,为了更清晰我就不简写了
  9. cel: cel,
  10. el: el
  11. }
  12. console.log(exports)
  13. console.log('********---------*********')
  14. console.log(module.exports)
  15. console.log('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx')
  16. console.log(exports)
  17. console.log(module)

输出为:

  1. { cel: [Function: cel], el: 15 }
  2. // 这里exports 的el属性值被 module.exports.el = 15 修改了 可以看出exports是module的一个属性
  3. ********---------*********
  4. { cel: [Function: cel], el: 20 } // 这里module.exports 的el属性值重新赋值了,值为20
  5. xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
  6. { cel: [Function: cel], el: 15 } // 这里exports输出
  7. Module { // 这里module.exports 输出
  8. id: '.',
  9. exports: { cel: [Function: cel], el: 20 },
  10. parent: null,
  11. filename: 'e:\\accumulate\\node\\ycode\\tempCodeRunnerFile.js',
  12. loaded: false,
  13. children: [],
  14. paths:
  15. [ 'e:\\accumulate\\node\\ycode\\node_modules',
  16. 'e:\\accumulate\\node\\node_modules',
  17. 'e:\\accumulate\\node_modules',
  18. 'e:\\node_modules' ] }

综合上面的例子可以看出来:

  • 默认 exportsmodule.exports 是指向同一块内存的。
  • exportsmodule 的一个属性。
  • module.exports 导出的是整个模块, exports 导出的是一个对象。

注意: 如果直接给exports 赋值则会切断与module.exports之间的联系。
例如:

  1. // a.js
  2. var el = 20
  3. exports = { el: el }
  4. // b.js
  5. var a = require('./a')
  6. console.log(a) // {}

可见 exports = { // *** } 不会导出任何东西。


export 与 export default

es6的导出和导入就比较好理解了。
使用:

  1. // a.js
  2. export let cel = 20
  3. export let cy = ()=>{
  4. console.log(521)
  5. }
  6. /* 可以再每个需要导出的变量函数或者对象前面加上export导出, * 还可以使用 export { cel, cy }进行导出 注意这里没有等号, * 这两种导出方法对应的导入方法是一样的都是 import {cel, cy} from './a.js' */
  7. // b.js
  8. import { cel, cy} from './a.js'
  9. cy() // 521
  • export defaultexport 都可以用于导出常量,函数,文件,模块等。
  • 通过export 方式导出,在导入时要加{}export default 则不需要
  • 通过export 方式导出,在导入时要加{} 并且要使用导出时的函数或者对象名。
  • 同一个模块中 export 可以存在多个,export default 仅能存在一个。
  • export default 导出的对象时不一定使用导出时的名字。因为这种方式实际上是将该导出对象设置为默认导出对象,完全可以重新命名。看下面的例子

    // a.js

    const cel = {

    1. name: '小明',
    2. age: '20'

    }

    export default cel

    // b.js
    import cyq from ‘./a.js’
    console.log(cyq.age) // 20

参考:https://blog.csdn.net/adley_app/article/details/80340457

发表评论

表情:
评论列表 (有 0 条评论,554人围观)

还没有评论,来说两句吧...

相关阅读