export default xx和module.exports = {}的区别
时间: 2023-08-02 20:41:42 浏览: 144
`export default xx` 和 `module.exports` 都是用来导出模块的方式,但是在使用上有一些区别。
`export default` 语法是 ES6 中引入的,用于导出一个默认的模块。一个模块只能有一个默认导出,导入时可以使用任何变量名来引用它。例如:
```
// module.js
const x = 1;
export default x;
// app.js
import myX from './module.js';
console.log(myX); // 输出 1
```
`module.exports` 是 CommonJS 规范中用于导出模块的方式。它可以导出任何类型的值,包括函数、对象、字符串等。例如:
```
// module.js
const x = 1;
module.exports = x;
// app.js
const myX = require('./module.js');
console.log(myX); // 输出 1
```
需要注意的是,`export default` 是 ES6 的语法,需要在支持 ES6 的环境下才能正常使用。而 `module.exports` 是 CommonJS 规范中的语法,可以在 Node.js 环境下使用,并且可以通过一些工具转换成浏览器可以使用的语法。
相关问题
export default和module.exports区别
`export default` 和 `module.exports` 都是用于导出模块的关键字,但是它们的使用方式和用途有所不同。
在 ES6 中,使用 `export default` 可以导出一个默认的模块,即一个模块只能有一个默认导出。例如:
```
// module.js
const name = 'module';
export default name;
// index.js
import moduleName from './module';
console.log(moduleName); // 输出 'module'
```
在 CommonJS 中,使用 `module.exports` 可以导出一个模块,可以导出多个变量或者函数。例如:
```
// module.js
const name = 'module';
module.exports = {
name,
getName() {
console.log(this.name);
}
}
// index.js
const moduleObj = require('./module');
console.log(moduleObj.name); // 输出 'module'
moduleObj.getName(); // 输出 'module'
```
需要注意的是,在一个模块中只能使用一个默认导出,但是可以使用多个命名导出。而在 CommonJS 中,可以使用 `exports` 对象添加多个导出,但是不能使用 `exports` 对象来覆盖 `module.exports`,因为 `exports` 对象只是对 `module.exports` 的一个引用。
export default router和modular.exports什么区别
export default router 和 module.exports 都是用于在 Node.js 中导出模块的方式,但它们有些不同。
export default 是 ES6 的语法,用于导出一个默认的模块,可以使用 import 语法导入,如:
```
// module.js
const router = express.Router();
export default router;
// app.js
import router from './module';
```
而 module.exports 则是 Node.js 的语法,可以用于导出一个对象、函数或者变量等。在另一个文件中通过 require 引入时需要加上相应的属性名称,如:
```
// module.js
const router = express.Router();
module.exports = router;
// app.js
const router = require('./module');
```
另外需要注意的是,当使用 ES6 的 import 语法时,只能导入默认导出的模块,不能导入具名导出的模块。而当使用 module.exports 时,可以通过 require 导入模块中导出的任意变量或函数。
阅读全文