赞
踩
1.vue与react的选择
2.vue特点
优点:渐进式、组件化、轻量级、虚拟 DOM、响应式、单页面路由、数据与视图分开、用户体验好。
缺点:单页面不利于 seo 优化,不支持 IE8 以下,首屏加载时间长。
3.vuex、pinia(菠萝)的理解
4.vue-router动态路由(定义、获取)
- var path = '/index';//动态路由
- path += '?id=1';
-
- // vue2
- const query = this.$route.query;//{id:1}
- const routes = this.$router.options.routes;//获取路由
-
- // vue3
- import { useRouter } from 'vue-router';
- const router = useRouter();
- const query = router.currentRoute.query;//{id:1}
- const routes = router.options.routes;//获取路由
5.$route和$router的区别
6.css只在当前组件内起作用
7.vue几种常用的指令
8.vue常用的事件修饰符
9.什么是vue的计算属性
注:过多的逻辑来进行数据处理就会使代码难以维护,这样的情况尽量采用计算属性来处理
10.vue等单页面应用及其优缺点
首先我们得知道Vue把组件定义为对象,vue得工作是把数据渲染到模板上在通过vue-cli挂载到app的标签上然后通过render函数插入到这个标签内,在通过签单路由来实现组件间得跳转
11.watch、computed、methods差异
- <div>{{ ab }}</div>
- <div>{{ a }}computed直接改变</div>
- <div>{{ b() }}调用,重新执行</div>
- <div @click="onClick">{{ c('111', '222', '333') }}computed(传参方式)</div>
-
- export default {
- components: {},
- data() {
- return { ab: 未改变 }
- },
- watch: {
- ab(val, oldVal) {
- console.log(`改变后: ${val}, 改变前: ${oldVal}`)
- },
- },
- computed: {
- a() {
- return this.ab + 'aaaa'
- },
- c() {
- return function (a, b, c) {
- return a + b + c
- }
- }
- },
- methods: {
- b() {
- return this.ab + 'bbbb'
- },
- onClick() {
- this.ab = '改变'
- }
- }
- }
12.组件中data为什么是函数
为什么组件中的 data 必须是一个函数,然后 return 一个对象,而 new Vue 实例里,data 可以直接是一个对象?
因为组件是用来复用的,JS 里对象是引用关系,这样作用域没有隔离,而 new Vue 的实例,是不会被复用的,因此不存在引用对象的问题。
13.对于MVVM的理解?
MVVM 是 Model-View-ViewModel 的缩写。
在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。
14.VUE生命周期的几个阶段
15.什么是vue生命周期?
Vue 实例从创建到销毁的过程,就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程,称之为 Vue 的生命周期。
16.vue生命周期的作用是什么?
它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的过程时更容易形成好的逻辑
17.vue生命周期总共有几个阶段?
总共分为8个阶段:创建前/后, 载入前/后,更新前/后,销毁前/销毁后。
18.第一次页面加载会触发哪几个钩子?
beforeCreate, created, beforeMount, mounted
18.DOM 渲染在 哪个周期中就已经完成?
答:DOM 渲染在 mounted 中就已经完成了。
19.VUE实现数据双向绑定的原理:
20.VUE组件间的参数传递
- // A父组件
- const name = '逸尘';
- <Components :name="name" @onFun="fun"></Components>
- fun(e){
- console.log("e:", e);//自组建向父组件穿值的取值方法
- }
-
- // B父组件
- // 兄弟组件之间传至可以通过vuex跟pinia全局状态管理
- // 创建一个事件中心,相当于中转站,可以用它来传递事件和接收事件
- const arr= [];
- export default arr
-
- // A子组件
- // props里面定义参数name
- // 直接通过this.name 的形式去props中获取
- this.$emit('onFun', '自组建向父组件穿值的取值方法')
21.VUE的路由实现:hash模式和history模式
hash模式:
在浏览器中符号“#”,#以及#后面的字符称之为hash,用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 依赖的页面。”
22.VUEX是什么?怎么使用?哪种功能场景使用它
只用来读取的状态集中放在store中的state下,改变状态的方式是提交mutations,这是个同步的事物, 异步逻辑应该封装在actions中。
在main.js引入store,新建了一个目录store,….. export 。
使用场景:单页应用中,组件之间的状态、音乐播放、登录状态、加入购物车
参数 | 描述 |
state | 存放的数据状态,不可以直接修改里面的数据 |
mutations | 同步调用方法动态修改Vuex 的 store 中的状态或数据 |
actions | 异步调用方法动态修改Vuex 的 store 中的状态或数据 |
getters | 类似vue的计算属性,主要用来过滤一些数据 |
modules | 项目复杂时,可以使用modules为每个都有单独的state、mutation、action、getters使结构非常清晰 |
23.对keep-alive的理解
注:include匹配到的组件进行缓存,exclude匹配到的组件不进行缓存(分隔字符串、正则表达式、数组)
24.vue的watch的深度使用
- // watch deep => 深度监听 immediate => 侦听器创建时立即触发回调
- export default {
- components: {},
- data() {
- return {
- a: true,
- b: { bb: 'bbbb' },
- c: { cc: 'cccc' }
- }
- },
- watch: {
- a(val, oldVal) {
- console.log(`改变后: ${val}, 改变前: ${oldVal}`)
- },
- b: {
- handler (newName, oldName) {
- console.log(newName)
- },
- deep: true
- },
- c: {
- handler (newName, oldName) {
- console.log(newName)
- },
- immediate: true
- },
- }
- }
25.vuex中mutation和action的详细区别
26.vue-router中导航守卫有哪些
注:三种导航守卫,分别是:全局导航守卫、路由独享的守卫、组件内的守卫
to => 当前、to => 记录、next()=> 继续执行
- const routes = [
- {
- path:'/index',//对应匹配的路径
- component: () => import('index/index.vue'),//页面路由
- beforeEnter: (to, from, next) => {}//钩子函数(单独绑定到路由,只针对当前)
- }
- ]
- // 全局守卫(页面加载前)
- router.beforeEach((to, from , next) => { })
- // 全局守卫(页面加载后)
- router.afterEach((to, from) => {})
- // 组件内的守卫
- beforeRouteEnter((to, from, next) => { }),
- beforeRouteUpdate((to, from, next) => { }),
- beforeRouteLeave((to, from, next) => { })
27.vue中虚拟DOM diff算法
diff算法:将两个模块进行差异化对比,修补更新差异的过程叫做patch打补丁,是一种优化手段。
优点:
缺点:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。