MJingv / jehol-person-blog

Jehol's Blog 🙋 (hexo+react)
https://mjingv.github.io/JeholBlog/
0 stars 1 forks source link

前端框架基础扫盲 #17

Open MJingv opened 5 years ago

MJingv commented 5 years ago

原理

双向绑定

实现方法

1. 发布订阅

2. 脏值检查

3. 数据劫持

Object.defineProperty
(obj, pro,{
    enumerable: true,
    configurable: true,
Get:function(){},
Set:function(val){}
})
object.defineProperty proxy
劫持对象的访问器,获取属性变化 Proxy可以直接监听对象而非属性
劫持get、set 有13中拦截方法get、set、has、delete、apply、isExtensible、ownKeys、deleteProperty、construct等13种
无法监听数组变化,只能劫持对象的属性(要遍历、要深拷贝) 无法用polyfill磨平
MJingv commented 5 years ago

基础前行

mvvm

virtual-dom

前端路由跳转

Reac vs Vue

MJingv commented 5 years ago

react长列表渲染

资料来源

JS魔法堂:函数节流(throttle)与函数去抖(debounce)

节流与防抖

背景

事件频繁触发dom、资源重复加载导致ui崩溃

防抖(debounce)

const debounce = (delay,cb)=>{
    let timer;
    return ()=>{
        clearTimeout(timer)
        timer=setTimeout(()=>{
            cb()
        },delay)    
    }
}

节流(throttle)


const throttle =(delay,cb)=>{

    let now = new Data().getTime();
    let last=0
    if(now-last<delay) return
    last=now;
    cb()

    }

预加载

定义:将所有所需的资源提前请求加载到本地,这样后面在需要用到时就直接从缓存取资源。

为什么用预加载

实现方法

懒加载【延迟加载】

定义:滚动的可视区域外不加载

为什么用懒加载:

原理

优化

React优化

react-virtualized

react-tiny-virtual-list

others

MJingv commented 5 years ago

vue

组件间通信

父子

兄弟

跨多层次组件通信

任意组件

extend 能做什么

mixin 和 mixins 区别

computed 和 watch 区别