前言:无论是之前学的服务端的node.js还是现在做项目vue都有暴露模块和引用模块的身影,感觉挺有意思的,就整理了一下网上关于对于es6模块化的资料。
概述
在 ES6 前, 实现模块化使用的是 RequireJS 或者 seaJS(分别是基于 AMD 规范的模块化库, 和基于 CMD 规范的模块化库)。
ES6 引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。
ES6 的模块化分为导出(export) @与导入(import)两个模块。
个人补充:如果是在原生js上使用,在html引用js文件(有模块的)时候,比如
<script src="./imTest.js" type="text/javascript"></script>
或者
<script src="./imTest.js" ></script>
都会报错!!!
报错的原因是用了es6的语法, 浏览器默认将它作为js解析会出现问题,需要将它作为模块导入,因此,我们需要将其修改为<script src="./imTest.js" type="module"></script>,修改之后就会出现正确的结果:
特点
ES6 的模块自动开启严格模式,不管你有没有在模块头部加上 use strict;。
模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。
每个模块都有自己的上下文,每一个模块内声明的变量都是局部变量,不会污染全局作用域。
每一个模块只加载一次(是单例的), 若再去加载同目录下同文件,直接从内存中读取。
emmmm......再具体的用法挪步到
菜鸟教程 https://www.runoob.com/w3cnote/es6-module.html
笔者这里就简单介绍一下ES6模块比较明显的特点.。
暴露关键字:export 、export default
作用:可以把任意类似的变量暴露出去
区别:export 暴露模块具体变量名字