前端H5⾯试题(总结)
⼀、v-if 与 v-show的选择
1、v-if 和 v-show具有类似的功能,不过 v-if 才是真正的条件渲染,它会根据表达式是当地销毁或者重建元素及绑定的事件或⼦组件。
若表达式初始值为false,则⼀开始元素/组件并不会渲染,只有当条件第⼀次为真时才开始编译。
⽽v-show只是简单的CSS属性切换,⽆论条件真与否,都会被编译。相⽐之下,v-if更适合条件不经常改变的场景,因为它切换
开销相对⽐较⼤,⽽v-show适⽤于频繁切换条件。
⼆、vuex是什么?怎么使⽤?哪种功能场景使⽤它?
只⽤来读取的状态集中放在store中; 改变状态的⽅式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。
在main.js引⼊store,注⼊。新建了⼀个⽬录store,….. export 。
场景有:单页应⽤中,组件之间的状态、⾳乐播放、登录状态、加⼊购物车
三、Vue组件间的参数传递
1.⽗组件与⼦组件传值
⽗组件传给⼦组件:⼦组件通过props⽅法接受数据;
⼦组件传给⽗组件:$emit⽅法传递参数
2.⾮⽗⼦组件间的数据传递,兄弟组件传值
eventBus,就是创建⼀个事件中⼼,相当于中转站,可以⽤它来传递事件和接收事件。项⽬⽐较⼩时,⽤这个⽐较合适。(虽然也有不少⼈推荐直接⽤VUEX,具体来说看需求咯。技术只是⼿段,⽬的达到才是王道。)
四、对于MVVM的理解?
MVVM 是 Model-View-ViewModel 的缩写。
Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。
View 代表UI 组件,它负责将数据模型转化成UI 展现出来。
ViewModel 监听模型数据的改变和控制视图⾏为、处理⽤户交互,简单理解就是⼀个同步View 和 Model的对象,连接Model和View。
在MVVM架构下,View 和 Model 之间并没有直接的联系,⽽是通过ViewModel进⾏交互,Model 和 ViewModel 之间的交互是双向的,因此View 数据的变化会同步到Model中,⽽Model 数据的变化也会⽴即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,⽽View 和 Model 之间的同步⼯作完全是⾃动的,⽆需⼈为⼲涉,因此开发者只需关注业务逻辑,不需要⼿动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统⼀管理。
五、Vue的⽣命周期
beforeCreate(创建前) 在数据观测和初始化事件还未开始
created(创建后) 完成数据观测,属性和⽅法的运算,初始化事件,$el属性还没有显⽰出来
beforeMount(载⼊前) 在挂载开始之前被调⽤,相关的render函数⾸次被调⽤。实例已完成以下的配置:编译模板,把data⾥⾯的数据和模板⽣成html。注意此时还没有挂载html到页⾯上。
mounted(载⼊后) 在el 被新创建的 vm.$el 替换,并挂载到实例上去之后调⽤。实例已完成以下的配置:⽤上⾯编译好的html内容替换el属性指向的DOM对象。完成模板中的html渲染到html页⾯中。此过程中进⾏ajax交互。
beforeUpdate(更新前) 在数据更新之前调⽤,发⽣在虚拟DOM重新渲染和打补丁之前。可以在该钩⼦中进⼀步地更改状态,不会触发附加的重渲染过程。
updated(更新后) 在由于数据更改导致的虚拟DOM重新渲染和打补丁之后调⽤。调⽤时,组件DOM已经更新,所以可以执⾏依赖于DOM的操作。然⽽在⼤多数情况下,应该避免在此期间更改状态,因为这可能会导致更新⽆限循环。该钩⼦在服务器端渲染期间不被调⽤。
beforeDestroy(销毁前) 在实例销毁之前调⽤。实例仍然完全可⽤。
destroyed(销毁后) 在实例销毁之后调⽤。调⽤后,所有的事件会被移除,所有的⼦实例也会被销毁。该钩⼦在服务器端渲染期间不被调⽤。
1.什么是vue⽣命周期?
答: Vue 实例从创建到销毁的过程,就是⽣命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等⼀系列过程,称之为 Vue 的⽣命周期。
2.vue⽣命周期的作⽤是什么?
答:它的⽣命周期中有多个事件钩⼦,让我们在控制整个Vue实例的过程时更容易形成好的逻辑。
3.vue⽣命周期总共有⼏个阶段?
答:它可以总共分为8个阶段:创建前/后, 载⼊前/后,更新前/后,销毁前/销毁后。
4.第⼀次页⾯加载会触发哪⼏个钩⼦?
答:会触发 下⾯这⼏个beforeCreate, created, beforeMount, mounted 。
5.DOM 渲染在 哪个周期中就已经完成?
答:DOM 渲染在 mounted 中就已经完成了。
六、vuex是什么?怎么使⽤?哪种功能场景使⽤它?
只⽤来读取的状态集中放在store中; 改变状态的⽅式是提交mutations,这是个同步的事物; 异步逻辑应该封装在action中。
在main.js引⼊store,注⼊。新建了⼀个⽬录store,….. export 。
场景有:单页应⽤中,组件之间的状态、⾳乐播放、登录状态、加⼊购物车
state
Vuex 使⽤单⼀状态树,即每个应⽤将仅仅包含⼀个store 实例,但单⼀状态树和模块化并不冲突。存放的数据状态,不可以直接修改⾥⾯的数据。
mutations
mutations定义的⽅法动态修改Vuex 的 store 中的状态或数据。
前端页面模板getters
类似vue的计算属性,主要⽤来过滤⼀些数据。
action
actions可以理解为通过将mutations⾥⾯处⾥数据的⽅法变成可异步的处理数据的⽅法,简单的说就是异步操作数据。view 层通过store.dispath 来分发 action。
const store = new Vuex.Store({ //store实例
state: {
count: 0
},
mutations: {
increment (state) {
}
},
actions: {
increment (context) {
contextmit('increment')
}
}
})
modules
项⽬特别复杂的时候,可以让每⼀个模块拥有⾃⼰的state、mutation、action、getters,使得结构⾮常清晰,⽅便管理。
const moduleA = {
state: { ... },
mutations: { ... },
actions: { ... },
getters: { ... }
}
const moduleB = {
state: { ... },
mutations: { ... },
actions: { ... }
}
const store = new Vuex.Store({
modules: {
a: moduleA,
b: moduleB
})
七、Vue与Angular以及React的区别?
(版本在不断更新,以下的区别有可能不是很正确。我⼯作中只⽤到vue,对angular和react不怎么熟)
1.与AngularJS的区别
相同点:
都⽀持指令:内置指令和⾃定义指令;都⽀持过滤器:内置过滤器和⾃定义过滤器;都⽀持双向数据绑定;都不⽀持低端浏览器。
不同点:
AngularJS的学习成本⾼,⽐如增加了Dependency Injection特性,⽽Vue.js本⾝提供的API都⽐较简单、直观;在性能上,AngularJS 依赖对数据做脏检查,所以Watcher越多越慢;Vue.js使⽤基于依赖追踪的观察并且使⽤异步队列更新,所有的数据都是独⽴触发的。
2.与React的区别
相同点:
React采⽤特殊的JSX语法,Vue.js在组件开发中也推崇编写.vue特殊⽂件格式,对⽂件内容都有⼀些约定,两者都需要编译后使⽤;中⼼思想相同:⼀切都是组件,组件实例之间可以嵌套;都提供合理的钩⼦函数,可以让开发者定制化地去处理需求;都不内置列数
AJAX,Route等功能到核⼼包,⽽是以插件的⽅式加载;在组件开发中都⽀持mixins的特性。
不同点:
React采⽤的Virtual DOM会对渲染出来的结果做脏检查;Vue.js在模板中提供了指令,过滤器等,可以⾮常⽅便,快捷地操作Virtual DOM。
⼋、⼀句话⾯试题
1.css只在当前组件起作⽤
答:在style标签中写⼊scoped即可 例如:<style scoped></style>
2.v-if 和 v-show 区别
答:v-if按照条件是否渲染,v-show是display的block或none;
3.$route和$router的区别
答:$route是“路由信息对象”,包括path,params,hash,query,fullPath,matched,name等路由信息参数。⽽$router是“路由实例”对象包括了路由的跳转⽅法,钩⼦函数等。
4.vue.js的两个核⼼是什么?
答:数据驱动、组件系统
5.vue⼏种常⽤的指令
答:v-for 、 v-if 、v-bind、v-on、v-show、v-else
6.vue常⽤的修饰符?
答:.prevent: 提交事件不再重载页⾯;.stop: 阻⽌单击事件冒泡;.self: 当事件发⽣在该元素本⾝⽽不是⼦元素的时候会触发;.capture:事件侦听,事件发⽣的时候会调⽤
7.v-on 可以绑定多个⽅法吗?
答:可以
8.vue中 key 值的作⽤?
答:当 Vue.js ⽤ v-for 正在更新已渲染过的元素列表时,它默认⽤“就地复⽤”策略。如果数据项的顺序被改变,Vue 将不会移动 DOM 元素来匹配数据项的顺序, ⽽是简单复⽤此处每个元素,并且确保它
在特定索引下显⽰已被渲染过的每个元素。key的作⽤主要是为了⾼效的更新虚拟DOM。
9.什么是vue的计算属性?
答:在模板中放⼊太多的逻辑会让模板过重且难以维护,在需要对数据进⾏复杂处理,且可能多次使⽤的情况下,尽量采取计算属性的⽅式。好处:①使得数据处理结构清晰;②依赖于数据,数据更新,处理结果⾃动更新;③计算属性内部this指向vm实例;④在template调⽤时,直接写计算属性名即可;⑤常⽤的是getter⽅法,获取数据,也可以使⽤set⽅法改变数据;⑥相较于methods,不管依赖的数据变不变,methods都会重新计算,但是依赖数据不变的时候computed从缓存中获取,不会重新计算。
10.vue等单页⾯应⽤及其优缺点
答:优点:Vue 的⽬标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件,核⼼是⼀个响应的数据绑定系统。MVVM、数据驱动、组件化、轻量、简洁、⾼效、快速、模块友好。
缺点:不⽀持低版本的浏览器,最低只⽀持到IE9;不利于SEO的优化(如果要⽀持SEO,建议通过服务端来进⾏渲染组件);第⼀次加载⾸页耗时相对长⼀些;不可以使⽤浏览器的导航按钮需要⾃⾏实现前进、后退。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论