export使用、使用模块化方式、处理异步方式
1、export default 和 export 区别
1、export、import可以有多个,而export default只有一个
2、通过export方式导出,在导入使用使用{}接受,export default则不需要
搭配使用:
1、箭头函数,使用export导出API:(常用)
export const getActivityList = params => { return request({ url: '--', method: 'get', params }); }
导出:直接导出
接受:import使用{getActivityList}
使用:直接使用getActivityList
2、使用class搭配export default使用:
class ExceptionRefundService { const getActivityList = params => { return request({ url: '--', method: 'get', params }); } }
导出:export default new ExceptionRefundService();
接受:import使用exceptionRervice接受
使用:exceptionRervice.getActivityList
2、实现模块化方式:CommonJS、AMD、CMD、ES6(有利于管理模块间的依赖,更依赖模块的维护)
1)ES6 和 CommonJS模块化区别:
1、CommonJS模块的输出的是值的拷贝,模块内部的变化不会影响到这个值,除非写成一个函数,才能得到内部变动的值,ES6模块是动态引用,不会缓存,动态的去加载值,而且不能重新赋值
2、CommonJS模块是运行时加载,ES6模块是编译时候输出接口
使用:
1、CommonJS使用require加载模块,ES6使用import加载模块
2、CommonJS输出使用module.export,ES6使用export或者export default
2)AMD规范和CMD规范:
产出:
AMD 是 RequireJS 在推广过程中对模块定义的规范化产出。
CMD 是 SeaJS 在推广过程中对模块定义的规范化产出。
原理:
AMD:依赖模块的语句都定义在回调函数之中,模块加载完成之后执行回调函数,不影响后面语句的运行。
CMD:可以吧依赖写进代码的任意一行。
特点:
AMD规范:推崇前置依赖、提前执行(对于依赖的模块)
CMD规范:推崇依赖就近、延迟执行(对于依赖的模块)
3)强依赖和弱依赖:
强依赖:性能优先,则使用前置依赖(AMD),开发成本优先,则使用依赖就近的思想(CMD)
弱依赖:将弱依赖的部分写到回调函数内即可
使用:实现一个模块加载器,会将强依赖前置,弱依赖采用异步回调函数的形式。
3、处理异步和同步通常方式:promise\async await
1)promise状态:pending(未完成)、resolved(已完成)、rejected(失败)
注意:执行顺序 同步->异步->回调 ,promise是异步微任务,setTimeout是异步宏任务,微任务比宏任务先执行,所以取消了定制器的回调。
用法:let promise = new Promise(function(resolved,rejected){
resolved('成功')/ rejected('失败')
})
promise.then(res=>{}).catch(res=>{})
扩展:使用Promise.all([promise1,promise2]).then(res=>{}) 确保所有的promise都是resolved状态时候就返回
使用Promise.race.....只要有一个promise成功了就返回
2)async和await:
特点:
1、await只能放在async里面。
2、相比gennerator语义化更强。
3、await后面可以配合promise使用,也可以是数字、字符串、布尔值。
4、async返回的是一个promise对象。
5、await语句后面的promise状态为reject,async后续代码就不会执行。(可以使用try catch捕获,建议:有await地方都要try catch)