es6模块系统
es6引入了模块化,其设计思想是在编译时就能确定模块的依赖关系,以及输入和输出的变量。
模块中可以导入和导出各种类型的变量,如函数、对象、字符串、数字、布尔值、类等。
每个模块都有自己的上下文,每个模块内声明的变量都是局部变量,不会污染全局作用域。 每个模块只加载一次(是单例的),若再去加载同目录下同文件,直接从内存中读取。
export和import
模块导入和导出各种类型的变量,如字符串、数值、函数、类。
- 导出的函数声明与类声明必须要有名称(export default命令另外考虑).
- 不仅能导出声明还能导出引用(例如函数).
- export命令可以出现在模块的任何位置,但必须处于模块顶层。
- import命令会提升到整个模块的头部,首先执行。
webpack+babel
chunk异步加载
system+babel分模块异步加载
script的module模式
<script type="module" src="js/app.js"></script>
stylus
css预处理框架(三大css预处理器:scss,less,stylus)
- Sass(Scss)
Sass有两种语法格式。首先是SCSS,仅在css3语法的基础上进行拓展,所有css3语法在sass中都是通用的,同时加入sass的特色功能。此外,也支持大多数的css hacks(针对不同浏览器写不同的css code的过程,就叫css hack)写法以及浏览器前缀写法,以及早期的ie滤镜写法。以.scss作为拓展名。
另一种也是最早的sass语法格式。使用缩进代替花括号,换行代替分号。
- Less
很像Scss,和css完全兼容。
- Stylus
和sass有一点点类似,最大的特点便是没有分号,没有冒号,没有大括号,通过缩进和换行,像编程一样的书写方式。