简述export、 export default和 module.export的区别是什么?
参考答案:
export、export default和module.exports都是用于模块化代码导出方法和属性的方式,但它们之间存在一些区别。
- 语法和规范:export和export default是ES6(ECMAScript 2015)中的语法,用于导出模块。而module.exports属于CommonJS规范,常在Node.js环境中使用。
- 导出方式:export和export default的导出方式略有不同。export允许你导出多个变量或函数,每个导出的项都可以被单独引入。而export default只能导出一个默认值,无论它是什么类型。
- 引入方式:当使用export导出多个项时,需要使用大括号{}来引入这些项。例如,如果有一个模块使用export导出了两个函数foo和bar,那么在其他模块中引入这两个函数时需要这样做:import { foo, bar } from 'module-name'。而当一个模块使用export default导出时,不需要使用大括号,可以直接引入并为其命名:import myFunction from 'module-name'。
- 重置和赋值:在CommonJS中,module.exports是一个对象,可以被重新赋值。而exports是module.exports的一个引用,不能直接被重新赋值。如果尝试这样做,实际上只是改变了exports的指向,而不是module.exports本身。因此,如果希望在模块中重置导出内容,应直接对module.exports进行操作。
总结来说,export和export default是ES6中的导出语法,支持导出多个项或单个默认值,并在引入时可能需要使用大括号。而module.exports是CommonJS规范中的导出方式,通常用于Node.js环境,支持对导出内容的直接赋值和重置。