一些简单面试总结

104 阅读5分钟

一.HTML语义化

1.什么是HTML的语义化

简单来说就是正确的标签做正确的事。例如、头部使用<header>标签、导航使用<nav> 标签等等。

2.HTML的语义化的好处

  1. 网页加载慢导致css文件还未加载时,页面仍然清晰可读。
  2. 提升用户体验。(例如:title、alt可用于解释名词)。
  3. 使代码有可读性,便于团队开发和维护。

二.HTML中 !DOCTYPE 的作用

规定了浏览器文档使用哪种html或者xhtml规范

三.Vue的优点和缺点

1.优点

Vue最核心的两个特点(优点),响应式组件化

优点1.响应式

(1).什么是响应式

通过MVVM思想实现数据的双向绑定,通过虚拟DOM让我们可以用数据来操作DOM,而不必去操作真实的DOM,提升了性能。且让开发者有更多的时间去思考业务逻辑。 (简单说:当更新或者增加data(数据)时,页面(UI)会有响应,重新渲染对应的数据;)

(2).响应式的好处

对某些数据的修改就能自动更新视图,让开发者不用再去操作DOM,有更多的时间去思考业务逻辑。

(3).Vue 响应式的特点
  1. 对象新增加的属性,不具有响应式;
  2. 修改对象本存在属性,具有响应式;
  3. 数组的普通(非对象)元素通过索引修改,不具有响应式;
  4. 数组的对象元素通过索引修改,具有响应式;
  5. 数组通过调用 ‘push/splice/shift…’ 方法具有响应式;
  6. 数组通过调用 ‘push/splice/shift…’ 方法新增加的对象元素也具有响应式;
(4).数据双绑

1653122612.png

优点2.组件化

(1).什么是组件化

把一个单页应用中的各个模块拆分到一个个组件当中,或者把一些公共的部分抽离出来做成一个可复用的组件。所以组件化带来的好处就是,提高了开发效率,方便重复使用,使项目的可维护性更强。

优点3:

vue是单页面应用,使页面局部刷新,不用每次跳转页面都要请求所有数据和dom

2.缺点

  1. 初次加载时耗时多
  2. VUE不支持IE8
  3. 生态环境差不如angular和react

四.Vue中的computed和watch

computed

定义:

计算属性是自动监听依赖值的变化,从而动态返回内容,监听是一个过程,在监听的值变化时,可以触发一个回调,并做一些事情。

特点:

  1. 数据可以进行逻辑处理,减少模板中计算逻辑。
  2. 对计算属性中的数据进行监视
  3. 依赖固定的数据类型(响应式数据)
  4. 计算属性的属性值必须是一个函数。
  5. 计算属性是可以缓存的

watch

定义:

watch中可以执行任何逻辑,如函数节流,Ajax异步获取数据,甚至操作 DOM(不建议)。

侦听属性的 immediate:true 和 deep:true

  • immediate:true:在页面一开始初始化时,watch 不会被触发,即 “第一次”不会被触发,只有后继数据改变时,watch 才会触发和监听。

  • deep:true:watch 主要通过监听数据的地址是否发生改变来监听数据模块,但是,当数据变得复杂,如一个对象里面嵌套多个对象时,当只改变子对象的地址,而父对象的地址不改变时,父对象就不会被 watch 监听到

.Vue中的computed和watch的区别是什么?

  1. computed和watch都基于watcher来实现的。
  2. computed的属性是具备缓存的,依赖的值不发生变化,对其取值时计算属性方法不会重复执行
  3. watch是监控值的变化,当值发生改变的时候,会调用回调函数

五. Vue中hash模式和history模式的区别

  1. 最明显的是在显示上,hash模式的URL中会夹杂着#号,而history没有。

  2. Vue底层对它们的实现方式不同。hash模式是依靠onhashchange事件(监听location.hash的改变),而history模式是主要是依靠的HTML5 history中新增的两个方法,pushState()可以改变url地址且不会发送请求,replaceState()可以读取历史记录栈,还可以对浏览器记录进行修改。

  3. 当真正需要通过URL向后端发送HTTP请求的时候,比如常见的用户手动输入URL后回车,或者是刷新(重启)浏览器,这时候history模式需要后端的支持。因为history模式下,前端的URL必须和实际向后端发送请求的URL一致,例如有一个URL是带有路径path的(例如www.lindaidai.wang/blogs/id),如果后端没有对这个路径做处理的话,就会返回404错误。所以需要后端增加一个覆盖所有情况的候选资源,一般会配合前端给出的一个404页面。

六. Vue中v-if和v-show区别的区别

  1. v-show 通过控制元素的 display 属性来决定显示或隐隐,而 v-if本质是通过操纵dom元素的添加移除来进行切换显示(条件为真,元素将会被渲染,条件 为假,元素会被销毁)。
  2. v-if有更高的切换开销,v-show有更高的初始渲染开销。如果需要频繁的切换,使用v-show比较好,如果运行条件很少改变,使用v-if比较好。
  3. v-show比v-if性能更高,因为v-show只能动态的改变样式,不需要增删DOM元素。所以当程序不是很大时候,v-if和v-show区别都不大,如果项目很大,推荐多用v-show,较少浏览器后期操作的性能。
  4. v-if 有配套的 v-else-if 和 v-else,而 v-show 没有。
  5. v-if 可以搭配 template 使用,而 v-show 不行。

七.Vue中v-for循环key的作用

  1. 提升v-for渲染的效率
  2. 提高渲染性能
  3. 避免数据混乱的情况出现。

注意:如果对数据的逆序添加、逆序删除等破坏顺序操作,用index作为key值,效率低。