ES6 导入导出
ES6引入了原生的模块化支持,使得JavaScript代码可以被划分为可重用的模块。这些模块可以导出部分代码(如函数、对象、类等),并被其他模块导入使用。
export
- 命名导出(Named Exports)
可以从模块中导出多个值。每个值的导出都有一个名称。
javascript
// file: mathFunctions.js
export const add = (x, y) => x + y;
export const subtract = (x, y) => x - y;
- 默认导出 (Default Exports)
javascript
// file: MyComponent.js
export default class MyComponent {
// class definition
}
import - 导入
导入命名导出
- 使用花括号
{}
来导入特定的命名导出。
javascript
// file: main.js
import { add, subtract } from './mathFunctions.js';
console.log(add(2, 3)); // 5
- 导入默认导出时,不使用花括号,并且可以指定任意名称
javascript
// file: App.js
import MyComponent from './MyComponent.js';
- 混合导入,可以同时导入默认导出和命名导出
javascript
// 假设 MyLibrary.js 中有默认导出和命名导出
import MyLibrary, { someFunction } from './MyLibrary.js';
和上边的导入和导出都不一样的一个例子。
Mock.js
的工作原理与常规的模块导出导入有所不同。当你在文件中引入 Mock.js
并调用 Mock.mock()
方法时,你实际上是在执行一个"全局"操作,它影响的是整个应用的网络请求层。
javascript
import Mock from 'mockjs'
Mock.mock('/api/food', {...})
为什么不需要 export
在你的 mock.js
文件中,你并不需要导出任何东西,因为你的目的是执行配置,而非提供可以在其他地方使用的函数或对象。
当你在 main.js
中做了如下引入:
javascriptCopy code
import './mock/index'
你实际上是在执行 mock/index.js
文件中的代码,其中包括 Mock.mock()
方法的调用。这些调用在应用启动时执行,从而设置了全局的Mock规则。这就是为什么即使没有 export
,它仍然能够生效的原因。