axios 与fetch的区别
osi七层结构
promise异步 then、catch -- 返回码 3开头的进入哪个 then?
—— (resolve函数只能接受200响应状态码?)axios可以设置拦截器,对状态码进行判断,再做处理。
setTimeout(() => {
console.log(0)
}, 0);
console.log(1);
new Promise(resolve => {
resolve(2);
// 状态变了,也还是会同步执行下面的,并且按照代码顺序放微任务
Promise.resolve().then(() => console.log(3));
console.log(4);
}).then(t => console.log(t));
console.log(5);
1,4,5, 3,2, 0
// 写一个函数计算出两个绝对路径的的相对路径,如下
// let x = '/a/b/c/d';
// let y = '/a/e/f';
// 相对路径为 '../../e/f'
let relativePath = (a, b) => {
}
二面
做的项目 - 返回比较组件
问如果填写表单时,点了浏览器的后退怎么办?
隔一段时间自动保存,存到sessionStorage;
可以用localStorage吗?
也可以,但是要定期清除,通过容量、生存期、提交和退出的操作的触发 进行主动删除localStorage;
webStorage容量5M,表单的内容一般不会那么大;图片通过url引入,不会直接存图片。。?
填写表单时,出现卡顿? select选择组件操作卡顿、input输入组件输入延迟卡顿
(大型的表单数据,下拉选项非常多甚至还要从接口获取)
Vue.prototype._update 触发太频繁
https://wenku.baidu.com/view/076b5487bbf3f90f76c66137ee06eff9aef849ef.html
一个对象,绑定了非常多的表单数据,当el-input数据更新时,vue组件会去渲染整个dom树,导致耗时非常的长。
解决:将表单拆成几个vue子组件;
(自定义了校验方法)
在输入时,vue进行多次render刷新渲染操作,导致form-item的input在输入时出现卡顿。
解决:(官方)将 Form 相关的业务独立到一个单独的组件中,减少组件渲染的消耗,如果有很多校验项,可把它们分别放在不同的Form中处理;
Form表单有一个【selfUpdate】的参数,意思是:自定义字段更新逻辑。
或Form表单增加selfUpdate属性,并设置为true;通过 change/onValuesChange方法;
手撕:写一个函数,将字符串{ }中的替换成对象的值,如果没有该属性就不改变它
function replace(str, obj) {}
const a = {
b: 1,
c: 2,
e: {
f: 3
}
}
const str = '123{b}xxx{a}12356{d}aaa{e.f}';
// 中间相当于 通过键值字符串 找对象中的值
function getValue(a, key) {}
getValue(a, 'b') => 1
getValue(a, 'e.f') => 3
function replace(str, obj) {
// 匹配字母 e.f,还可以 \{([\w\.]*)\}
return str.replace(/\{(\w+\.*\w*)\}/g, function (s, $1) {
const keys = $1.split('.');
let key = obj;
for (let i = 0; i < keys.length; i++) {
if (key) key = key[keys[i]];
}
return key ? key : s;
}
)
}
// /\{(.*)\}/g 会导致从第一个 { 匹配到最后的 },中间的没匹配到