• vue.js面试题


    参看:

    Vue2.0 v-for 中 :key 到底有什么用?

    Vue面试中,经常会被问到的面试题/Vue知识点整理

    vue里的data要用return返回的原因浅析

    Vue中的v-for循环key属性注意事项小结

    vue中使用v-for时为什么不能用index作为key?

     

    1.v-for 和 v-if一起使用问题

    v-for的优先级比v-if的优先级高,在遍历每一条item后,会执行v-if,会造成不必要的计算,影响性能。

    解决方法:通过使用computed属性,来筛选出符合条件项,然后再使用v-for遍历

     

    2.实例属性data为什么是一个function

    vue的核心思想是数据驱动和组件系统,每一个组件都是可复用的,当引入一个组件的时候,组件里的data是一个普通的对象时,所有用到的这个组件都会引用时同一个data,会造成数据污染,将data封装为函数后,,实例化组件的时候,我们只是调用了data函数生成数据副本,避免了数据污染。

    3.key在v-for的作用

    vue在渲染列表时,默认使用的是“就地复用”的策略,让列表中某一条数据发生改变时,只会diff改变的这一条数据,而不会全部diff列表,这时就是依靠key实现的

    所以,当用index作为key时,删除某一条数据,此时列表的index会更新,不能作为唯一标识符,此时会全部diff,无法做到性能最优

    所以一句话,key的作用主要是为了高效的更新虚拟DOM

     

    4.在哪个生命周期发起ajax

    不考虑服务器端渲染:在created和mounted都可以,created周期内,数据已经加载完毕,mounted周期内,vdom已经被挂载到实例上,此时ajax,如果只做{{}}渲染,俩个周期都可以,如果发生dom更新,在mounted比较合适。

    服务器端渲染:在mounted内。

     

    5.hash和history模式的区别

    hash模式:在浏览器url中提现为#,#和#之后的内容用window.location.hash读取

    特点:hash虽然在URL中,但不被包括在HTTP请求中;用来指导浏览器动作,对服务端安全无用,hash不会重加载页面。

    hash 模式下,仅 hash 符号之前的内容会被包含在请求中,如 http://www.xxx.com,因此对于后端来说,即使没有做到对路由的全覆盖,也不会返回 404 错误。

     

    history模式:history采用HTML5的新特性;且提供了两个新方法:pushState(),replaceState()可以对浏览器历史记录栈进行修改,以及popState事件的监听到状态变更。


    history 模式下,前端的 URL 必须和实际向后端发起请求的 URL 一致,如 http://www.xxx.com/items/id。后端如果缺少对 /items/id 的路由处理,将返回 404 错误。

    Vue-Router 官网里如此描述:“不过这种模式要玩好,还需要后台配置支持……所以呢,你要在服务端增加一个覆盖所有情况的候选资源:如果 URL 匹配不到任何静态资源,则应该返回同一个 index.html 页面,这个页面就是你 app 依赖的页面。”

     

    6.计算属性怎么理解

    在模板中放入太多的逻辑会让模板过重且难以维护,在需要对数据进行复杂处理,且可能多次使用的情况下,尽量采取计算属性的方式。

    好处:

    ①使得数据处理结构清晰;

    ②依赖于数据,数据更新,处理结果自动更新;

    ③计算属性内部this指向vm实例;

    ④在template调用时,直接写计算属性名即可;

    ⑤常用的是getter方法,获取数据,也可以使用set方法改变数据;

    ⑥相较于methods,不管依赖的数据变不变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。

     

    7.v-on可以监听多个方法吗

    <input type="text" v-on="{ input: onInput, focus: onFocus, blur: onBlur }">

     

  • 相关阅读:
    读书笔记--Linux Shell脚本攻略
    深入理解javascript原型链
    javascript基本类型及类型转换
    ECMAScript6 Promise
    git初体验
    走进git
    Dom编程优化
    go 递归实现快排
    go语言排序
    实现一个迭代器类
  • 原文地址:https://www.cnblogs.com/houfee/p/12834870.html
Copyright © 2020-2023  润新知