如果不定义module.exports,只对exports传递一个值,如exports.name,那module.exportsl里面含有name这个属性吗?如果将一个对象赋值exports,module.exports还有这个对象吗?
时间: 2023-07-28 17:58:50 浏览: 97
如果不定义 `module.exports`,只对 `exports` 传递一个值,如 `exports.name`,那么 `module.exports` 里面不会含有 `name` 这个属性。这是因为 `exports` 实际上是 `module.exports` 的一个引用,它们最初都指向同一个对象,但是如果对 `module.exports` 进行了重新赋值,那么 `exports` 就会失去引用关系,不再指向 `module.exports`,此时对 `exports` 进行属性的赋值就不会影响到 `module.exports` 对象了。
如果将一个对象赋值给 `exports`,那么 `module.exports` 还是指向原来的对象,因为这个对象是通过引用传递的。但是如果对 `exports` 进行重新赋值,那么 `module.exports` 就会失去引用关系,此时对 `exports` 进行属性的赋值就不会影响到 `module.exports` 对象了。所以,如果想要导出一个对象,最好直接使用 `module.exports` 而不是 `exports`。
相关问题
是否正确。let a='123'; const b={ "name":'张三'; "age":23 } function test1 (){ console.log('哈哈') } function test2 (){ return 'okok' } module.exports =a; module.exports =b; module.exports =test1; module.exports =test2; //或 module.exports={ a, b, test1, test2 }
不太正确。在 CommonJS 模块规范中,一个模块只能导出一次,而你的代码中使用了多次 `module.exports` 导出不同的内容,这样只会导出最后一次导出的内容,其它导出会被覆盖。
如果你想要导出多个变量或函数,可以使用以下方式:
```
// 方式1:逐个导出
exports.a = '123';
exports.b = {
"name": '张三',
"age": 23
};
exports.test1 = function() {
console.log('哈哈');
};
exports.test2 = function() {
return 'okok';
};
// 方式2:一次性导出
module.exports = {
a: '123',
b: {
"name": '张三',
"age": 23
},
test1: function() {
console.log('哈哈');
},
test2: function() {
return 'okok';
}
};
```
这样就可以正确导出多个变量和函数了。
vue3 module.exports
Vue 3 使用的是 ES 模块化语法,而不是 CommonJS 的 `module.exports`。通过 ES 模块化,你可以使用 `export` 关键字来导出组件、函数或变量,然后使用 `import` 关键字来导入它们。
下面是一个示例:
```javascript
// 导出组件
export default {
name: 'MyComponent',
// ...
}
// 导入组件
import MyComponent from './MyComponent.vue'
// 导出函数
export function myFunction() {
// ...
}
// 导入函数
import { myFunction } from './myModule'
```
在 Vue 3 中,你可以直接使用这种 ES 模块化语法,无需再使用 `module.exports`。
阅读全文