赞
踩
export
和 export default
是 ES6 模块系统的核心部分,用于从文件中导出函数、关键字,对象或值,使其可以在其他文件中通过 import
语句导入和使用,而 exports
和 module.exports
是CommonJS模块系统的一部分,在 Node.js 环境中,你可以使用 exports
或 module.exports
来导出模块,但这并不是 ES6 标准的一部分。require
和 module.exports
来导入和导出模块。export
关键字是ES6模块系统的一部分,它允许你从一个文件中导出多个变量、函数、类或任何其他值。导入时,你可以根据需要选择性地导入这些值。- 实例1
- // myModule.js
- export const myVariable = "Hello from myVariable!";
- export function myFunction() {
- console.log("Hello from myFunction!");
- }
-
- // myIndex.js
- import { myVariable, myFunction } from './myModule';
- console.log(myVariable); // 输出 "Hello from myVariable!"
- myFunction(); // 输出 "Hello from myFunction!"
-
-
- 实例2
- // debounce.js导出函数
- // 防抖函数实现
- function debounce(func, wait) {
- let timeout;
- return function() {
- const context = this;
- const args = arguments;
- clearTimeout(timeout);
- timeout = setTimeout(() => {
- func.apply(context, args);
- }, wait);
- };
- }
- export { debounce };// 使用 export 导出防抖函数
-
- // app.js
- // 导入防抖函数
- import { debounce } from './debounce';
- // 假设你有一个需要防抖的函数
- function doSomething() {
- console.log('Doing something...');
- }
- // 使用防抖函数包装 doSomething
- const debouncedDoSomething = debounce(doSomething, 500); // 设置500毫秒的防抖时间
- // 在某个高频事件中调用防抖函数
- window.addEventListener('resize', debouncedDoSomething);
export default
允许你为一个模块指定一个默认导出。这意味着导入该模块的文件可以使用任何名称来接收这个默认导出,而不仅仅是在导出时使用的名称。- 实例1
- // myModule.js 导出简单对象
- const myDefaultValue = "Hello from export default!";
- export default myDefaultValue;
-
- // myIndex.js 引入导出的对象
- import anythingModule from './myModule';
- // 注意这里我们使用了 "anythingModule" 这个名称,但它可以是任何名称
- console.log(anythingModule); // 输出 "Hello from export default!"
-
-
- 实例2
- // myObject.js
- // 使用 export default 导出对象
- export default {
- name: 'John Doe',
- age: 30,
- greet: function() {
- console.log('Hello, my name is ' + this.name);
- }
- };
-
- // anotherFile.js
- // 这里可以使用任意名称引入导出的对象
- import myCustomObject from './myObject.js';
- // 现在你可以使用引入的对象
- console.log(myCustomObject.name); // 输出 "John Doe"
- myCustomObject.greet(); // 输出 "Hello, my name is John Doe"
-
-
- 实例3
- // debounce.js 导出防抖函数
- // 防抖函数
- function debounce(func, wait) {
- let timeout;
- return function() {
- const context = this;
- const args = arguments;
- clearTimeout(timeout);
- timeout = setTimeout(() => {
- func.apply(context, args);
- }, wait);
- };
- }
- export default debounce;// 使用 export default 导出防抖函数
-
- // app.js 引入导出的防抖函数
- import debounce from './debounce';
- // 假设你有一个需要防抖的函数
- function doSomething() {
- console.log('Doing something...');
- }
- // 使用防抖函数包装 doSomething
- const debouncedDoSomething = debounce(doSomething, 500); // 设置500毫秒的防抖时间
- // 在某个高频事件中调用防抖函数
- window.addEventListener('resize', debouncedDoSomething);
exports
对象在Node.js环境中特别常见,它是模块系统的一部分。当你创建一个新的模块文件时,exports
对象默认是可用的,你可以向它添加属性,这些属性可以在其他文件中通过 require
函数导入使用。- 实例1
- // myModule.js
- exports.myFunction = function() {
- console.log("Hello from myFunction!");
- };
- exports.myVariable = "Hello from myVariable!";
-
- // myIndex.js
- const myModule = require('./myModule');
- myModule.myFunction(); // 输出 "Hello from myFunction!"
- console.log(myModule.myVariable); // 输出 "Hello from myVariable!"
- 实例1
- // myModule.js
- const myValue = 'Hello, world!';
- // 使用 module.exports 导出单一值
- module.exports = myValue;
-
- // app.js
- // 引入导出的单一值
- const myValue = require('./myModule');
- console.log(myValue); // 输出 "Hello, world!"
-
-
- 实例2
- // myModule.js
- // 使用 module.exports 导出对象
- module.exports = {
- myFunction: function() { /* ... */ },
- anotherValue: 'Another value'
- };
-
- // app.js
- // 引入导出的多个值(如果 myModule.js 是这样导出的)
- const myModule = require('./myModule');
- console.log(myModule.myFunction); // 输出 myFunction 函数
- console.log(myModule.anotherValue); // 输出 "Another value"
module.exports和
exports的
使用建议module.exports
或exports
,并保持一致。这样可以避免混淆,并使得其他开发者更容易理解你的代码。module.exports
通常更简洁。exports
对象的引用,那么使用exports
可能更合适。exports
和module.exports
来导出不同的内容,这会导致不可预期的行为。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。