在ES6中,模块化的暴露主要通过export关键字来实现。根据暴露方式的不同,可以将其分为以下几种类型:
每个export都暴露各自的方法或者变量。
- // test.js
- export let a = 100;
- export function sayHello() {
- console.log("Hello, World");
- }
在其他文件中,可以使用解构赋值来引入这些暴露的变量或函数。
使用一个export暴露所有的方法和变量。
- // test.js
- let city = '北京';
- const scorer = function() {
- console.log("给我打分!");
- }
- export { city, scorer };
引入时,可以直接通过解构赋值来引入所需的变量或函数。
使用export default来暴露一个默认值。
- // test.js
- export default {
- data: "四月",
- test: function() {
- console.log("一个小测试!!!");
- }
- };
引入时,可以直接使用
import关键字,不需要解构赋值。
as关键字进行重命名。
与暴露方式相对应,ES6也提供了几种引入模块的方式:
使用import * as moduleName from 'modulePath'
- // 引入m1.js模块
- import * as _m1 from "js/m1.js";
- _m1.teach();
直接引入模块中暴露的特定变量或函数。
- // 引入m1.js模块中的a和teach
- import { a, teach } from "js/m1.js";
- console.log(a); // 输出 100
- teach(); // 输出 "m1--我们可以教给你很多东西!"
使用import defaultName from 'modulePath'
- // 引入m3.js模块的默认暴露
- import m3 from "js/m3.js";
- m3.change(); // 输出 "m3---我们可以改变你!!"
as关键字进行重命名。import语句中,'modulePath'需要替换为实际的模块文件路径。