模块化
-
将一个大的程序文件,拆分成许多个小的文件,然后将小文件组合起来
-
优势:
- 防止命名冲突
- 代码复用
- 高维护性
-
ES6之前 模块化规范产品
- CommonJS => NodeJS、Browserify
- AMD => requireJS
- CMD => seaJS
-
ES6 模块化语法
模块功能主要有两个命令构成:export 和 import。
- export 命令用于规定模块的对外接口
- import 命令用于输入其他模块提供的功能
暴露方法(export):
//-------分别暴露-------- export let school = 'lyun' //-------统一暴露-------- export {school ,---,---} //-------默认暴露-------- export [name]{ school : 'lyun', class : 'jike' }
引入方法(import):
<script type="module"> //通用导入方式 //引入另一个js文件中所有添加 export 的数据 作为 m1 import * as m1 from "路径"; //解构赋值形式 import {school, class} from "路径"; import {school as university, calss} from "路径"; import {[name] as school} from "路径"; //简便形式 针对默认暴露 import school from "路径"; </script> // npx browserify dist/js/app.js -o dist/bundle.js // npx babel js -d dist/js --presets=babel-preset-env
ES7
-
新增方法
-
数组方法(includes)
-
includes 方法用来检测数组中是否包含某个元素,返回布尔类型值
const arr1 = ['西游记','红楼梦','三国演义','水浒传']; console.log(arr1.includes('西游记'))//true console.log(arr1.includes('大话西游'))//false //ES5中为indexOf 存在返回索引值 不存在返回 -1
-
-
幂运算 **
-
console.log(2 ** 10); console.log(Math.pow(2, 10));
-
-
ES8
-
新增方法
- async 和 await
- 结合使用可以让异步代码相同步代码一样
- async 函数
- async 和 await
-
对象方法拓展
var arr1 = { name:'小新', cities:['北京','上海','深圳'], xueke:['前端','Java','大数据','运维'] }; //获取所有的键 console.log(Object.keys(arr1)); //获取所有的值 console.log(Object.values(arr1)); //entries console.log(Object.entries(arr1));//返回值:[['name','小新'],['cities',[..]]...] //entries 用于创建Map var m = new Map(Object.entries(arr1)); //对象属性的描述对象 console.log(Object.getOwnPropertyDescriptors(school)); var ogj = Object.creat(null, { name :{ value:'xiaoxin', //属性特性 writable:true, //是否可删除 configurable:true, //是否可枚举 enumerable:true } }); //深度克隆,配置属性且配置属性特性
ES9
-
rest参数
function connect({host,port, ...user}){//...user及为rest ... } connect({ host:'127....', port:'3306', username:'root', password:'root' }) //...user将存放除host,port之外的参数 //扩展运算符对Object的操作可进行对象的合并 var obj1 = { name:'xiaoxin' }; var obj2 = { age:'18' }; var obj3 = { sex:'男' }; var obj4 = { school:'lyun' }; var zxm = {...obj1, ...obj2, ...obj3, ...obj4} //结果为 zxm = { name:'xiaoxin', age:'18', sex:'男', school:'lyun' }
-
正则扩展-命名捕获分组
reg.exec()
-
正则扩展-反向断言
跟剧目标前后进行获取
-
正则扩展-dotAll模式
ES10
-
Object.formEntries
//与ES8中的 Object.entries 作用相反 //Object.formEntries 将二维数组 转化为对象 //Object.entries 将对象 转化为二维数组