前端知识扫盲-VUE知识篇一(VUE核心知识)

2023-05-15,,

最近对整个前端的知识做了一次复盘,总结了一些知识点,分享给大家有助于加深印象。
想要更加理解透彻的同学,还需要大家自己去查阅资料或者翻看源码。后面会陆续的更新一些相关注知识点的文章。
文章只提出问题,并给出答案。
 
目录
1、对于Vue是一套渐进式框架的理解
2、对MVVM的理解
3、vue数据双向绑定的原理
4、vue.js的核心是什么?
5、vue中如何编写可复用的组件?
6、什么是vue生命周期和生命周期钩子函数?
7、vue更新数组、对象时触发视图更新的方法,可以顺便讲讲为什么。
8、 v-if 和 v-show 有什么区别
9、vue常用的修饰符
10、vue事件中如何使用event对象?
11、vue如何监听键盘事件中的按键?
12、v-on可以监听多个方法吗?
13、vue中 key 值的作用
14、Vue 组件中 data 为什么必须是函数
15、v-for 与 v-if 的优先级
16、vue中父子组件如何相互调用方法
17、vue父子组件的传值和注意事项
18、兄弟组件的传值(vue中央事件总线的使用)
19、vue中 keep-alive 组件的作用
20、$nextTick的使用
21、解决非工程化项目初始化页面闪动问题
22、v-model语法糖的组件中的使用
23、怎么实现自定义过滤器,常用的过滤器
24、怎么写一个vue指令,指令是拿来干什么的?
25、vue的计算属性和Watch属性的区别?
26、计算属性的缓存和方法调用的区别
27、vue等单页面应用及其优缺点
28、vue优化首页加载速度的方法
29、vue如何调用 原生app 提供的方法
30、vue中实现切换页面时为左滑出效果
31、vue弹窗后如何禁止滚动条滚动?
32、vue的Store模式
33、vue的性能优化方案
 
1、对于VUE是一套渐进式框架的理解
  他的主张性不强,排他性不强。就是如果你有老系统,你也可以某几个组件使用VUE实现。
 
2、对MVVM的理解
  他就是Model View ViewModel的简写。Model 代表数据层,View代表显示层。ViewModel是Model和View相互交互的桥梁。
 
3、数据双向绑定实现的原理;
  他是使用观察者模式来实现的,使用了Object.definePropety的set和get做的数据劫持。
  Observer 观察者,使用Object.definePropety观察数据变化,有变动则通知订阅者;
  Watcher 订阅者,收到变化通知,执行相关函数,更新视图,每个指令会有一个update方法,就是通过这个update方法更新视图的;
  Compile 解析器,解析DOM,并根据相关指令告诉订阅者需要添加哪些订阅内容;
 
4、vue.js的核心是什么?
  数据驱动(数据双向绑定),模块系统。
 
5、怎样编写一个VUE组件
  这个分两种组件。一种就是平时的页面组件,这个就按照正常写即可。
  如果是小组件,需要可复用的。也是按照平时用其他方式写组件思路一样,把可配置的参数,可开放的方法提取出来。只是他的传参方式,和方法开放按照VUE的语法来就可以。比如用porp传参。事件用$emit即可
 
6、VUE的生命周期,以及他的钩子函数
  beforeCreadted 开始创建实例,data,DOM都还是空的;
  creadted 实例创建完成,data已初始化
  beforeMount 开始挂载(开始解析),DOM也基本初始化了,但具体的filter啊等等这些指令还没替换;
  mounted 挂载完成(解析完成)DOM,DATA都初化完成了,也渲染成功了。
  beforeUpdate 数据更新开始时触发
  updated 数据更新完成时触发
  beforeDestroy 组件销毁前触发
  destroyed 组件销毁后触发,组件销毁只是解除的事件监听,和绑定。DOM还时会存在的
 
7、vue更新数组、对象时触发视图更新的方法,可以顺便讲讲为什么。
  这不能更新,是因为Objcet.defineproperty的set方法,如果直接更数组,对象的话他是不会触发的。而VUE的更新就是用的此方法做的监听。所以他的视图也就不会更新了。这set不更新的原因就是因为这是引用类型的数据。改变的是内存数据的本身,变量的引用指针并没有发生变化,所以set就不会被执行。知道了原因,解决就很简单了。(对象暂时说不通)
  a、把整个数组或对象进行重新赋值。
  b、vue已经把数组的变异方法进行了包裹,也都是可以使用的。
  c、使用vue的set方法设置,这至于他的处理方式暂时还没研究。
  8、v-if 和 v-show 有什么区别
  v-if 是直接删除添加节点;v-show是控制点的display显示隐藏
 
9、vue常用的修饰符
  .stop 防止冒泡
  .captrue 防止事件捕获
  .prevent 防止默认事件
  .up 向上键
  .down 向下建等等。。。
 
10、vue事件中如何使用event对象?
  不带括号的事件方法,默认参数是event对象。需要带括号传递参数的可以加$event对象
 
11、vue如何监听键盘事件中的按键?
事件后面加.13 按键数字,或者常用按键修饰符
 
12、v-on可以监听多个方法吗?
  可以。<input @click="" @foucs="" @input=""/>
 
13、vue中 key 值的作用
  给元素添加了一个唯一性标识,当数据更新时能更快的获取到更新内容。可以提高性能。个人理解是加了key就是使用ID查找标签更新内容,没加key就是使用标签查找形式更新。ID可以更快速精准。
 
14、Vue 组件中 data 为什么必须是函数
  因为data是存在vue构造函数的原型里面,原型是会共享的。如果直接赋值,会导致其他vue实例也跟着受影。
 
15、v-for 与 v-if 的优先级
  v-for的优先级比v-if高,所以这两个就不应该用到一起;
 
16、vue中父子组件如何相互调用方法
  父组件调子组件用$refs获取子组件实例,从而实现调用子组件方法或修改子组件的数据;
  子组件调父组件可用$emit向父组件派发事件,父组件需要v-on订阅事件;
 
17、vue父子组件的传值和注意事项
  父子组件使用props传值,但他是一个单向下行数据绑定模式。
  如果需要做成双向数据绑定,可以加.sync修饰符来实现。
 
18、兄弟组件之间的传值(中央事件的使用)
  可以使用VUEX和中央事件两种方法:VUEX请看VUEX的知识篇章
  兄弟组件传值可以建立一个空的VUE实例,来作为中转站。通过$emit事件形式来进行传值。这个空实例就是所谓的中央事件总线;
  中央事件总线可以注入到全局,避免每个模块还需要做引入动作
  建议大项目用vuex小项目用中央事件,因为中央事件代码量轻
 
19、vue中 keep-alive 组件的作用
  缓存当前组件状态,让其跳出后再回来还保留最后浏览状态。他有include与exclude两个属性,允许组件有条件地进行缓存。可以结合路由缓存页面组件。在meat中配置keep-alive属性
 
20、$nextTick的使用
  在数据更新后需要立马操作新DOM的情况下需要用到。
 
21、解决项目初始化页面闪动问题
  添加v-cloak指令
 
22、v-model语法糖的组件中的使用
  v-model就是v-value 和 v-on:input事件的结合;输入框触发input事件时更新了v-value绑定的数据值。
 
23、自定义过滤器,以及常用的过滤器
  使用filter定义过滤器,以管道形式使用。value | filter,需要过滤的值会作为第一个参数传入filter方法;
  货币格式,时间格式化,首字母大写,补0
 
24、怎么写一个vue指令,指令是拿来干什么的?
  用与操作DOM,比如给数据块加入loading效果,可使实现一个loading指令;
  指令使用directive进行注册
 
25、vue的计算属性和Watch属性的区别?
  计算属性监听的事依赖值,依赖值变了然后改变当前属性值。watch监听的事值本身的变化,发生变化了再去做一系列的操作。
  能用计算属性的尽量用计算属性,少用watch
 
26、计算属性的缓存和方法调用的区别
  计算属性是监听依赖值变化会自动重新执行,如果没变化取的是缓存的值,不执行计算方法。
  调用方法是需要每次手动调用,而且每次都会重新执行计算。
 
27、vue等单页面应用及其优缺点
  优点:数据双向绑定,组件化,轻量;
  缺点:浏览器只支持到IE9;SEO不友好,可以通过服务端渲染做支持;第一次加载首页时间较长;
 
28、如何提高VUE首页加载速度
  路由按需加载,必须做的。配置路由时使用 resolve require加载页面组件
  线上包去调map文件
  第三方库使用页面引入方式,不要放到webpack打包文件里面。但需要配置webpack的externals,这个属性的配置用处可以查阅相关资料。
 
29、vue如何调用 原生app 提供的方法
  所有交互都是在wiond对象上绑定方法,现有webViewJSbridge进行与原生APP的交互,JSbridge是通过一个隐藏的iframe实现;
 
30、vue中实现切换页面时为左滑出效果
  使用transition组件实现
 
31、vue弹窗后如何禁止滚动条滚动?
  直接设置body益出隐藏,并阻止页面的的滚动默认事件
 
32、vue的Store模式
  vue的store模式就是状态管理模式,平时做状态管理的时候都用的VUEX,但他用起来比较繁琐,我们可以自己按照vuex的思路也就是store模式实现一个简单的状态管理功能。实现很简单:就是定义一个全局对象。有需要用到这个对象的组件,直接在组件里把全局对象赋值一就可以了。详细可以看官方文档。
 
33、vue的性能优化方案
  1、页面组件使用路由懒加载,不要打包在一个文件里
  2、资源压缩,屏蔽map文件
  3、v-if 和 v-show的选择调用
    v-if是按需加载的,只有为true的时候才会加载相应资源
    v-show初始化的时候不管是true还是false都会加载,操作频繁的可以选择它。
  4、使用key标记 方便vue更新时更快的找到相关资源
  5、骨架屏加载
 
希望对大家有帮助,觉得有用的帮忙点个赞。谢谢!

前端知识扫盲-VUE知识篇一(VUE核心知识)的相关教程结束。

《前端知识扫盲-VUE知识篇一(VUE核心知识).doc》

下载本文的Word格式文档,以方便收藏与打印。