手记

【九月打卡】第19天 前端工程师2022版 就业必备基础技术面试分析

课程名称: Vue原理

课程章节:框架面试课

课程讲师: 双越

课程内容:

一、 如何理解MVVM

① 什么是数据驱动视图

  • 不再操作DOM,直接改变数据,vue或react的框架本身根据数据重新渲染视图

  • vue通过mvvm模式实现数据驱动视图

  • react通过setstate实现数据驱动视图

  • M -> Model     V -> View   VM -> ViewModel

二、 监听 data 变化的核心 API 是什么

① Vue 响应式

vue3之前,是用object.defineProperty来实现响应式

但由于object.defineProperty的一些缺点,vue3启用proxy.

通过该方法,为对象添加属性后,默认就有get和set方法。

比如给对象data添加了name属性后,通过data.name获取name属性时,就会触发get方法;

通过data.name=xxx给name赋值时,就会触发set方法。

object.defineProperty缺点:

深度监听,需要递归到底,一次性计算量大

无法监听新增属性/删除属性(Vue.set Vue.delete)

无法原生监听数组,需要特殊处理

三、 虚拟DOM

①用JS模拟DOM结构

②通过snabbdom学习vdom

◆简洁强大的vdom库,易学易用

◆Vue参考它实现的vdom和diff

https://github.com/snabbdom/snabbdom


四、模板编译

① 前置知识:JS的with语法

改变{}内自由变量的查找规侧,当做obj属性来查找

如果找不到匹配的obj属性,就会报错

With要慎用,它打破了作用域规侧,易读性变差

②vue template complier将模板编译为render函数

③执行render函数生成vnode

◆模板编译为render函数,执行render函数返回vnode

◆基于vnode再执行patch和diff(后面会讲)

◆使用webpack vue-loader,会在开发环境下编译模板(重要)

五、 vue 组件中使用 render 代替 template

六、如何用JS实现hash路由

<body>
    <p>hash test</p>
    <button id="btn1">修改 hash</button>

    <script>
        // hash 变化,包括:
        // a. JS 修改 url
        // b. 手动修改 url 的 hash
        // c. 浏览器前进、后退
        window.onhashchange = (event) => {
            console.log('old url', event.oldURL)
            console.log('new url', event.newURL)

            console.log('hash:', location.hash)
        }

        // 页面初次加载,获取 hash
        document.addEventListener('DOMContentLoaded', () => {
            console.log('hash:', location.hash)
        })

        // JS 修改 url
        document.getElementById('btn1').addEventListener('click', () => {
            location.href = '#/user'
        })
    </script>
</body>


好了第二部分的知识点暂时就这么多,明天总结一下Vue的面试题。


0人推荐
随时随地看视频
慕课网APP