ES6模块化
ES6模块化规范中定义:
1).每一个js文件都是独立的模块
2).导入模块成员使用import关键字
3).暴露模块成员使用export关键字
ES6模块化是浏览器端和服务器端通用的规范.
在NodeJS中安装babel
安装babel,bable就是一个语法转换器,将高级的具有兼容性的js代码转为低级的没有兼容想性性js代码。
打开终端,输入命令:npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node
安装完毕之后,再次输入命令安装:npm install --save @babel/polyfill
创建babel.config.js
在项目目录中创建babel.config.js文件。
编辑js文件中的代码如下:
const presets = [ ["@babel/env",{ targets:{ edge:"17", firefox:"60", chrome:"67", safari:"11.1" } }] ] //暴露 module.exports = { presets }
创建index.js文件
在项目目录中创建index.js文件作为入口文件
在index.js中输入需要执行的js代码,例如:console.log("ok");
使用npx执行文件
打开终端,输入命令:npx babel-node ./index.js
ES6基本语法设置默认导入/导出
默认导出
//当前文件模块 m1.js //私有成员 let a =10; let c=20; let d=30; function show(){} //将本模块中的私有成员暴露出去,供其他模块使用 export default{ a, c, show }//没有向外暴露d,所以外界访问不到
默认导入
import 接收名称 from “模块标识符”,如下:
//导入模块 import m1 from "./m1.js" cosole.log(m1); //输出{a:10,c:20,show:[Function:show]}
注意:在一个模块中,只允许使用export default向外默认暴露一次成员,千万不要写多个export default。
如果在一个模块中没有向外暴露成员,其他模块引入该模块时将会得到一个空对象
设置按需导入/导出
按需导出
//当前文件m1.js //向外按需导出变量s1 export let s1="aaa" //向外按需导出变量s2 export let s2 ="bbb" //按需导出方法 export function say =function(){}
按需导入
import { num,fn as printFn ,myName } from "./test.js"
同时导入默认导出的成员以及按需导入的成员import test,{ num,fn as printFn ,myName } from "./test.js"
使用as起别名
注意:一个模块中既可以按需导入也可以默认导入,一个模块中既可以按需导出也可以默认导出
直接导入并执行代码
只想单纯执行某个模块中的代码,并不需要得到模块中向外暴露的成员。
import "./test2.js";