1.ajax进度控制上传和下载:
`export default request(option={}){
const {url,method = "GET",onProgress,data = null} = options;
return new Promise((resolve)=>{
const xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange',()=>{
if(xhr.readyState === xhr.DONE){
resolve(xhr.responseText)
}
})
xhr.addEventListener('progress',(e)=>{
onProgress&&
onProgress({
loaded:e.loaded,//当前加载数据
total:e.total,//全部数据
})
})
xhr.upload.addEventListener('progress',(e)=>{
onProgress&&
onProgress({
loaded:e.loaded,//当前加载数据
total:e.total,//全部数据
})
})
xhr.open(method,url);
xhr.send(data)
}) }`
使用fetch比较好:
2.封装弹窗组件:
3.自定义ref,极致防抖:
使用customRef设置set延时:
4.解构和具名导入: const {b} = objb,
import {a} from './a.js' 后者可能会导致数据异常,会自动调用。
快速检测代码质量:
eslint:
"rules":{ "complexity":["eror",10] }
表示代码复杂度最大为10,圈复杂度。
6.js的数据类型: 原始:number,string,bolean,symbol,bigint,undefine,null 对象:obj
7。原型: js'语言实现面向对象,实现手段,通过原型就可以知晓某个对象丛属什么类型。避免丢失。 原型是函数的,叫做prototype。对象可以通过_proto_属性获取prototype对象,从而知道原型。这个过程叫做原型链。
8.promise;
主要是为了提出一个异步的解决方案,实现不同场景的异步。链式调用使得回调可监控。
9.vue的响应式: 为了实现数据和函数的联动,数据变化后,联动函数自动运行。数据和组件render函数关联,实现数据变化自动渲染更新。还有computed,watch等等。
10.判断传入函数是否是async:
`function isAsyncFunction(func){
return func[Symbol.toStringTag] === 'Asyncfunction';
}`