ES6新特性的学习
- 一.模块化的概念
- 二.导入(import)
- 三.导出(export)
- 四.默认导出(export default)
一.模块化的概念 模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。
一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export关键字输出该变量。
在es5中,用module.exports和exports导出模块,用require引入模块。
es6新增export和export default导出模块,import导入模块。
二.导入(import) import语句只能在声明了type="module"的script的标签中使用。
动态导入:import(),它不需要依赖type="module"的script标签。
按照一定的条件或者按需加载模块的时候,动态import()是非常有用的。
而静态的import是初始化加载的最优选择。
通用模式:
写法:import * as 命名 from “文件地址”
解构赋值形式:
写法:import {school,findJob} from “文件地址”
简便形式:只能针对默认暴露,对其他无效
写法:import 命名 from “文件地址”
三.导出(export) export后必须跟语句, 何为语句, 如声明, for, if 等都是语句, export 不能导出匿名函数, 也不能导出某个已经声明的变量, 如:
export const bar = function() {};
// 合法
export bar;
// 非法
export 1;
// 非法
export function foo () {};
// 合法, 后跟的是声明语句
export { foo };
// 合法, 后面跟的{}理解为语句, 就像if后面的{}一样
export { foo as bar };
// 合法export { foo: foo };
// 非法, 后面的{}被解析成对象
四.默认导出(export default) export default在整个模块中只能出现一次, 后只能具体的值, 何为具体的值, 如1, 2, 3, 再比如一个函数声明(非表达式), 或者是一个类声明(与函数声明一个意思), 或者匿名函数, 只要是能用变量接受的都可以, 例子:
export default 1;
// 合法
export default function foo() {};
// 合法, 因为function foo() {} 能被变量接受, 如 var bar = function foo() {}
export default const bar = 1;
// 非法, 因为var a = const bar = 1 是不合法的
export default { foo };
// 合法, {} 被理解为一个对象
export default { foo: foo };
// 合法, 同上//先用export default语法默认导出
//既然是默认输出,那么一个模板只能使用一次
export default function foo() {
console.log('foo');
}//导入默认值
import customName from './default.js';
//不用加大括号{}
customName();
// 'foo'
【ES6新特性|ES6新特性-模块化(import/export)】参考:
https://zhuanlan.zhihu.com/p/59683520
https://www.jianshu.com/p/a72d0560bcc6
推荐阅读
- vue.js|ES6模块化开发
- 如何设置网页 favicon 图标
- 面试题|【Web前端面试】葵花宝典(2022版本)——HTTP\浏览器 篇
- vue3的diff算法
- 手写axios
- SpringBoot|SpringBoot 搭建 Web 前后端分离项目
- vue.js|毕业实习:Vue+Springboot+MySQL实现的订餐系统
- linux|阿里前端面试题(最全),持续更新中
- 跟着大佬学JavaScript之lodash防抖节流合并