一、vue3 在watch 中监听数值变化时,使用防抖节流控制接口频繁调用
二、watch 监听,只监听当前vue文件中声明的变量或函数,当在监听中调用从外部js文件引入的方法时,要在该vue文件中重新声明
三、tool.js文件
export const debounce = (fn, delay) => {
let time;
return () => {
clearTimeout(time);
time = setTimeout(() => {
fn();
}, delay);
};
};
index.vue
import {debounce} from '...........'
watch(rulerValue, (news) => {
_debounce()
});
const _debounce =debounce(()=>{
// 调接口得方法
})
四、git stash使用,拉取分支代码,但不想提交当前已改得代码,
先使用git stash ,然后拉取代码,
1,git status 查看本地修改和库上的差异
2,git stash save "名字" 将修改内容保存在堆栈中
3,git pull 将本地仓库更新到最新
4,git stash pop(或git stash pop +名字)将堆栈中的修改应用到当前分支
5,git status 查看修改,如果有冲突需要手动修改冲突
6,修改冲突后提交
五、深入理解 Vue 3 响应性原理 —— Proxy & Reflect - 知乎 (zhihu.com)
可以很好理解得vue3响应式原理,不论vue2、vue3,都要收集依赖和触发依赖,这两点差不多,只不过vue2使用ES5的Object.defineProperty()收集和触发。vue3使用ES6 Reflect
和 ES6Proxy
(代理)
六、父子组件,子组件用v-model绑定父组件传的值,这样,子组件的值跟父组件的值保持一直
七、v-model绑定computed的值,若是computed值的对象中的值,则可以,若是直接computed的值,则不行
八、import引入文件夹时不写具体文件名
该文件夹下的文件:
如果package.json存在且设置正确的情况下,会加载package.json;若不满足,则加载index.js;
若不满足,则加载index.vue
九、过多的if,else问题,可以用数组匹配代替,
十、使用vue路由时,可以一个路由内添加多个组件,替代多个组件式引入
十一、JavaScript Class set 和get方法:
在构造函数中设置值后,类实例化后,可以获取、设置值
get 和set一起使用,set对值用作一些特殊处理,get返回处理后的值
class Test {
constructor() {
this.a = "11";
this.b = '333'
}
get a (){
return this._a
}
set a (value){
this._a = value
}
}
let test = new Test()
test.a = '222'
console.log(test.a); // 2222
test.b = '444'
console.log(test.b); // 444
在使用new关键字的时候,new类时经常传空值,在类中得做设置,对象后加?
在JavaScript中,对象属性后加"?"表示该属性是可选的。如果一个对象有一个可选属性,则在使用该属性时可以不必检查该属性是否存在,避免了出现空指针异常的情况。
class Person {
constructor(tplitInfo) {
console.log('tplitInfo.userName',tplitInfo,Boolean(tplitInfo?.userName));
this.userName = tplitInfo?.userName || '' ,
this.id = tplitInfo?.id || '' ;
}
}
export default Person;
对象后?判断对象是否有值
a = +a 把a转换成数值类型的
DOM diff算法是前端开发中常见的优化技术,它可以在更新DOM时,只更新需要更新的部分,从而提高页面的渲染性能。下面是一个简单的DOM diff算法的实现思路:
遍历旧的虚拟DOM树和新的虚拟DOM树,将它们的每个节点进行比较。
如果节点类型不同,直接替换旧的节点。
如果节点类型相同,比较节点属性是否有变化,如果有变化,更新节点属性。
如果节点有子节点,递归执行步骤1-3。
如果旧的虚拟DOM树比新的虚拟DOM树多出节点,直接删除多余的节点。
如果新的虚拟DOM树比旧的虚拟DOM树多出节点,直接添加新的节点。
实现DOM diff算法的关键在于建立虚拟DOM树,虚拟DOM树可以用JS对象来表示一个真实的DOM树,通过比较新旧虚拟DOM树的节点属性和子节点,可以判断出需要更新、删除或添加的节点。
以上是一个简单的DOM diff算法的实现思路,具体实现还需要考虑到各种情况的特殊处理,例如key属性的使用、组件化、异步更新等。