学习笔记之-----ES6

什么是ECMAscript

ECMAscript的组成:javascript+dom+bom
ECMA欧洲计算机制造商协会制定了ECMAscript标准,ECMA-262
ECMAscript是ECMA组织制定的ECMA-262标准化下的一个脚本语言
TC39(ECMAscript发展委员会)在维护ECMA-262的标准,由各大浏览器产商组织而成的。

ES6简介

● ES6, 全称 ECMAScript 6.0 ,是一个泛指,含义是 JavaScript 的下一个版本标准,2015.06 发版。
● ES6 主要是为了解决 ES5 的先天不足,比如 JavaScript 里并没有类的概念,但是目前浏览器的 JavaScript 是 ES5 版本,大多数高版本的浏览器也支持 ES6,不过只实现了 ES6 的部分特性和功能。
● ES6是ECMAScript的升级版本,也就是说JavaScript的核心部分进行了升级,在ES6中不包含DOM和BOM操作。
● 我们在学习ES6课程内容中,包含了ES7/8/9/10/11的内容

ECMAScript的版本

第一版本 97年 基本语法

第五版本 09年 我们之前学习的JS语法
第六版本 15年 做出重大改变,加入新的语法特性
第七版本 16年 Array.includes() /Array.find()…Async/Await
第八版本 17年 Object.values(),Object.entries()…
第九版本 18年 for await of/命名捕获组
第十版本 19年 Array.flat()/Array.flatMap()/Object.fromEntries()…
第十一版本 20年

ES6做了哪些改变

● 语法方面
○ let
○ ()=>{}
○ …
● 功能方面
○ 数组扩展
○ 对象扩展
○ …
● 扩展方面
○ set/map
○ symbol
○ promise
○ …

环境对ES6的支持

浏览器对ES2015的支持情况
● Chrome:51 版起便可以支持 97% 的 ES6 新特性。
● Firefox:53 版起便可以支持 97% 的 ES6 新特性。
● Safari:10 版起便可以支持 99% 的 ES6 新特性。
● IE:Edge 15可以支持 96% 的 ES6 新特性。Edge 14 可以支持 93% 的 ES6 新特性。(IE7~11 基本不支持 ES6)
服务器对ES2015的支持情况
● Node.js:6.5 版起便可以支持 97% 的 ES6 新特性。(6.0 支持 92%)

模块化开发

将一些特定功能的方法组合实现一个模块。
● 维护性较高
○ 当你引入很多个JS文件的时候,很有可能会不清楚这些JS文件之间的依赖关系,从而导致加载顺序出错。使用模块化开发之后就能避免这个问题。
● 相互独立
○ JS本身是没有命名空间的,为了减少命名冲突,经常使用对象或者闭包来减少命名冲突。对象只能减少命名冲突的概率,闭包的过多使用会造成内存泄漏。模块化开发之后,在模块内任何形式的命名都不会和其他模块的命名产生冲突,有效的解决了命名冲突的问题。
● 代码复用
○ 当我们想要实现某个功能的时候,如果某个模块正好有这个功能,我们就可以直接引用该模块,不必再写多余的代码,这样可以提高代码整体的效率,减少重复冗余的代码。

node对模块化的支持

● node实现了CommonJS模块化
● node v13.2.0之前
○ 在package.json中配置:

{   
"type": "module",   
    "scripts": {     
        "start": "node --experimental-modules index.js"   
    }
}

● node v13.2.0之后
○ 只需要在package.json中配置:

{
"type": "module"
}

ES6之前的模块化(CommonJS、AMD、CMD)

● CommonJS
○ 它通过 require 来引入模块,通过 module.exports 定义模块的输出接口。这种模块加载方案是服务器端的解决方案(同步),node完成了对它的支持
● AMD
○ 采用异步加载的方式来加载模块,模块的加载不影响后面语句的执行。require.js 实现了 AMD 规范。
○ 对浏览器端的异步加载尤其适用,是一个浏览器端模块化开发的规范。
● CMD
○ 和 AMD 方案都是为了解决异步模块加载的问题,sea.js 实现了 CMD 规范。
区别:
AMD是依赖前置,在定义模块的时候就要声明其依赖的模块。
CMD是就近依赖,只有在用到某个模块的时候再去require

ES6与CommonJS的区别

● CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。
● CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。
整体加载fs模块(即加载fs的所有方法),生成一个对象(_fs),然后再从这个对象上面读取方法。这种加载称为“运行时加载”,
ES6模块化在代码编译阶段从fs模块加载需要的方法,其他方法不加载。这种加载称为“编译时加载”或者静态加载,即 ES6 可以在编译时就完成模块加载,效率要比 CommonJS 模块的加载方式高。

浏览器端对ES6模块化的支持

//1.在script标签中使用
<script type="module">
//模块的导入及使用
</script>  
//2.文件引入的方式
<script type="module" src="index.js"></script><!-- 入口文件 -->  

模块导出(export)

● 分别导出
● 统一导出
● 默认导出(export default)

模块导入(import)

● 通用导入
● 关于别名
● 解构导入
● 默认导入(export default)

CommonJS的模块化

// CommonJS模块 
 let { stat, exists, readfile } = require('fs');
 // 等同于如下代码块
 let _fs = require('fs'); 
 let stat = _fs.stat;
 let exists = _fs.exists; 
 let readfile = _fs.readfile; 

//模块导出(a.js)
module.exports = {
  firstName: 'Michael',
  lastName: 'vicky'
};
//模块导入(b.js)
const { firstName, lastName } = require('./testExports');
console.log(firstName, lastName);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值