在JavaScript中,export和exports都用于导出(export)变量、函数、类等内容,但是它们的用法有一些区别。
export是ES6中新增的语法,用于导出模块中的内容。它可以导出一个变量、一个函数、一个类等,也可以导出多个变量、函数、类等。
// 导出一个变量
export const myVar = 'Hello World!';
// 导出一个函数
export function sayHello() {
console.log('Hello World!');
}
// 导出一个类
export class MyClass {
constructor(x, y) {
this.x = x;
this.y = y;
}
add(a, b) {
return a + b;
}
}
exports是ES5中使用的语法,用于导出模块中的内容。它可以导出一个变量、一个函数、一个类等,也可以导出多个变量、函数、类等。
// 导出一个变量
module.exports = { myVar: 'Hello World!' };
// 导出一个函数
module.exports = function sayHello() {
console.log('Hello World!');
}
// 导出一个类
module.exports = class MyClass {
constructor(x, y) {
this.x = x;
this.y = y;
}
add(a, b) {
return a + b;
}
}
- 如果在ES6模块中使用
export,则在同一模块中的变量和函数必须使用import关键字来导入。如果在ES5模块中使用exports,则在同一模块中的变量和函数不需要使用import关键字。
// ES6模块中导出一个变量
const myVar = 'Hello World!';
export { myVar };
// ES6模块中导出一个函数
export function sayHello() {
console.log('Hello World!');
}
// ES5模块中导出一个变量
module.exports = { myVar: 'Hello World!' };
// ES5模块中导出一个函数
module.exports = function sayHello() {
console.log('Hello World!');
}
- 如果在ES6模块中使用
import关键字来导入变量或函数,则在同一模块中的变量和函数可以直接使用。如果在ES5模块中使用exports导出多个变量或函数,则可以在同一模块中使用export关键字来导入多个变量或函数,也可以使用exports导出多个变量或函数。
// ES6模块中导入一个变量
import { myVar } from './myModule.js';
// ES6模块中导入一个函数
import { sayHello } from './myModule.js';
// ES5模块中导入一个变量
const { myVar } = require('./myModule.js');
// ES5模块中导入一个函数
const sayHello = require('./myModule.js').sayHello;
export和exports在JavaScript中用于导出变量、函数、类等内容,但是它们的语法和用法有一些区别。建议在使用export时尽量使用ES6模块,使用exports时尽量使用ES5模块。