凤来凰科技网

遇到过几个“自我检验”熬夜总结50个Vue知识点,全都会你就是神!事务失

凤来凰科技网 2

(给前端学加星标,数据库中并没有立即出现更改或保存完的新数据。所以一度怀疑spring 的事务失效了。那么这篇文章就来总结一下,提升前端技能.)

前言

家好,家给家造成 “spring事务失效”错觉的 几个常见场景,我是林三心,然后对症下药。Let's GO!!!以本人的经历中遇到的问题,这几天发生了很多事(具体是啥我就不说了),概分有以下几个场景:数据库引擎是否支持事务(Mysql 的 MyIsam引擎不支持事务);注解所在的类是否被加载为 Bean(是否被spring 管理);注解所在的方法是否为 public 修饰的;是否存在自身调用的问题;所用数据源是否加载了事务管理器;@Transactional的扩展配置propagation是否正确。下面展开分析每一个场景:数据库引擎不支持事务这里以 MySQL 为例,这些事,其 MyISAM 引擎是不支持事务操作的,吓得我把我这些年珍藏的都拿出来整理了一遍,InnoDB 才是支持事务的引擎,巴不得能多总结出一道是一道,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,我拿出了我的笔记,之前默认的都是:MyISAM,并且使劲回忆,所以这点要值得注意,终于悟出了这50道(咱不要太俗哈,底层引擎不支持事务再怎么搞都是白搭。没有被 Spring 管理如下面例子所示:如果此时把 @Service 注解注释掉,不叫面试题,咱叫知识点)

image.png

荣耀黄金

1. Vue的优点?Vue的缺点?

优点:渐进式,组件化,轻量级,虚拟dom,响应式,单页面路由,数据与视图分开

缺点:单页面不利于seo,不支持IE8以下,首屏加载时间长

2. 为什么说Vue是一个渐进式框架?

渐进式:通俗点讲就是,你想用啥你就用啥,咱也不强求你。你想用component就用,不用也行,你想用vuex就用,不用也可以

image.png3. Vue跟React的异同点?

相同点:

1.都使用了虚拟dom

2.组件化

3.都是单向数据流(父子组件之间,不建议子修改父传下来的数据)

4.都支持服务端渲染

不同点:

1.React的JSX,Vue的template

2.数据变化,React手动(setState),Vue自动(初始化已响应式处理,Object.defineProperty)

3.React单向绑定,Vue双向绑定

4.React的Redux,Vue的Vuex

4. MVVM是什么?和MVC有何区别呢?

MVC

Model(模型):负责从数据库中取数据

View(视图):负责展示数据的地方

Controller(控制器):用户交互的地方,例如点击事件等等

思想:Controller将Model的数据展示在View上

image.png

MVVM

VM:也就是View-Model,做了两件事达到了数据的双向绑定 一是将【模型】转化成【视图】,即将后端传递的数据转化成所看到的页面。实现的方式是:数据绑定。二是将【视图】转化成【模型】,即将所看到的页面转化成后端的数据。实现的方式是:DOM 事件。

思想:实现了 View 和 Model 的自动同步,也就是当 Model 的属性改变时,我们不用再自己手动操作 Dom 元素,来改变 View 的显示,而是改变属性后该属性对应 View 层显示会自动改变(对应Vue数据驱动的思想)

image.png

区别

整体看来,MVVM 比 MVC 精简很多,不仅简化了业务与界面的依赖,还解决了数据频繁更新的问题,不用再用选择器操作 DOM 元素。因为在 MVVM 中,View 不知道 Model 的存在,Model 和 ViewModel 也观察不到 View,这种低耦合模式提高代码的可重用性

Vue是不是MVVM框架?

Vue是MVVM框架,但是不是严格符合MVVM,因为MVVM规定Model和View不能直接通信,而Vue的可以做到这点

5. Vue和JQuery的区别在哪?为什么放弃JQuery用Vue?

1.jQuery是直接操作DOM,Vue不直接操作DOM,Vue的数据与视图是分开的,Vue只需要操作数据即可

2.jQuery的操作DOM行为是频繁的,而Vue利用虚拟DOM的技术,提高了更新DOM时的性能

3.Vue中不倡导直接操作DOM,者只需要把分精力放在数据层面上

4.Vue集成的一些库,提高效率,比如Vuex,Router等

6. Vue的作者是谁?声说出它的名字!!!

他的名字就是:鱿鱼西

永恒钻石

7. 为什么data是个函数并且返回一个对象呢?

之所以只一个函数,是因为一个组件可能会多处调用,而每一次调用就会执行并返回新的数据对象,这样,可以避免多处调用之间的。

8. 使用过哪些Vue的修饰符呢?

可以看我这篇文章「百毒不侵」面试官最喜欢问的13种Vue修饰符[2]

截屏2021-07-11 下午9.56.53.png9. 使用过哪些Vue的内指令呢?

image.png10. 组件之间的传值方式有哪些?

父组件传值给子组件,子组件使用进行接收

子组件传值给父组件,子组件使用对父组件进行传值

组件中可以使用和获取到父组件实例和子组件实例,进而获取数据

使用和,在对一些组件进行二次封装时可以方便传值,例如A->B->C

使用获取组件实例,进而获取数据

使用进行状态管理

使用进行跨组件触发事件,进而传递数据

使用和,官方建议我们不要用这个,我在看源码时发现量使用

使用浏览器本地缓存,例如

11. 路由有哪些模式呢?又有什么不同呢?

hash模式:通过后面的内容的更改,触发事件,实现路由切换

history模式:通过和切换url,触发事件,实现路由切换,需要后端配合

12. 如何设置动态class,动态style?

动态class对象:

动态class数组:

动态style对象:

动态style数组:

13. v-if和v-show有何区别?

1.是通过控制dom元素的删除和生成来实现显隐,每一次显隐都会使组件重新跑一遍生命周期,因为显隐决定了组件的生成和销毁

2.是通过控制dom元素的css样式来实现显隐,不会销毁

3.频繁或者数量显隐使用,否则使用

14. computed和watch有何区别?

1.是依赖已有的变量来计算一个目标变量,多数情况都是凑在一起计算出,并且具有,依赖值不变的情况下其会直接读取缓存进行复用,不能进行

2.是某一个变量的变化,并执行相应的回调函数,通常是的变化决定的变化,可以进行

3.简单记就是:一般情况下是,是

15. Vue的生命周期,讲一讲?

image.png16. 为什么v-if和v-for不建议用在同一标签?

在Vue2中,优先级是高于的,咱们来看例子

上面的写法是和同时存在,会先把7个元素都遍历出来,然后再一个个判断是否为3,并把3给隐藏掉,这样的坏处就是,渲染了无用的3节点,增加无用的dom操作,建议使用computed来解决这个问题:

17. vuex的有哪些属性?用处是什么?

image.png

State:定义了应用状态的数据结构,可以在这里设置默认的初始状态。

Getter:允许组件从 Store 中获取数据,mapGetters 辅助函数仅仅是将 store 中的 getter 映射到计算属性。

Mutation:是唯一更改 store 中状态的方法,且必须是同步函数。

Action:用于提交 mutation,而不是直接变更状态,可以包含任意异步操作。

Module:允许将单一的 Store 拆分为多个 store 且同时保存在单一的状态树中。

至尊星耀

18. 不需要响应式的数据应该怎么处理?

在我们的Vue中,会有一些数据,从始至终都,这种,既然,那也就了,不然只会做一些无用功消耗性能,比如一些写死的下拉框,写死的表格数据,这些数据量的,如果都进行响应式处理,那会消耗量性能。

19. watch有哪些属性,分别有什么用?

当我们一个基本数据类型时:

当我们一个引用数据类型时:

20. 父子组件生命周期顺序

父beforeCreate -> 父created -> 父beforeMount -> 子beforeCreate -> 子created -> 子beforeMount -> 子mounted -> 父mounted

21. 对象新属性无法更新视图,删除属性无法更新视图,为什么?怎么办?

原因:没有对对象的新属性进行属性劫持

对象新属性无法更新视图:使用,组件中

删除属性无法更新视图:使用,组件中

22. 直接arr[index] = xxx无法更新视图怎么办?为什么?怎么办?

原因:Vue没有对数组进行的属性劫持,所以直接arr[index] = xxx是无法更新视图的

使用数组的splice方法,

使用

23. 自定义指令

建议看这篇文章8个非常实用的Vue自定义指令[3]

24. 插槽的使用以及原理?

建议看我这篇文章「Vue源码学」你真的知道插槽Slot是怎么“插”的吗[4]

25. 为什么不建议用index做key,为什么不建议用随机数做key?

举个例子:

用和用都是同理,每次都在变,做不到专一性,很,也很消耗性能,所以,拒绝,选择

26. 说说nextTick的用处?

我举个例子,在vue中:

我们修改了三个变量,那问题来了,是每修改一次,DOM就更新一次吗?不是的,Vue采用的是的策略,通俗点说就是,多次修改,会进行一次,这样才能节性能嘛

看懂了上面,那你应该也看得懂下面的例子了吧:

答案是“小林”,前面说了,Vue是,所以数据一更新,视图却还没更新,所以拿到的还是上一次的旧视图数据,那么想要拿到最新视图数据怎么办呢?

27. Vue的SSR是什么?有什么好处?

就是服务端渲染

基于服务环境,所有代码在服务端渲染

数据返回给前端,然后前端进行“激活”,即可成为浏览器识别的html代码

首次加载更快,有更好的用户体验,有更好的seo优化,因为爬虫能看到整个页面的内容,如果是vue项目,由于数据还要经过解析,这就造成爬虫并不会等待你的数据加载完成,所以其实Vue项目的seo体验并不是很好

最强王者

28. Vue响应式是怎么实现的?

整体思路是数据劫持+观察者模式

对象内通过 方法,使用 将属性进行劫持(只会劫持已经存在的属性),数组则是通过重写数组方法来实现。当页面使用对应属性时,每个属性都拥有自己的属性,存放他所依赖的 (依赖收集),当属性变化后会通知自己对应的 去更新(派发更新)。

想详细了解过程,建议阅读我的Vue源码解析系列[5]

29. 为什么只对对象劫持,而要对数组进行方法重写?

因为对象最多也就几十个属性,拦截起来数量不多,但是数组可能会有几百几千项,拦截起来非常耗性能,所以直接重写数组原型上的方法,是比较节性能的方案

30. Vue的模板编译原理?

因为这个问题讲起来可能比较长,所以:

建议看我这篇「Vue源码学\(二\)」你不知道的-模板编译原理[6]

31. Vue的computed和watch的原理?

因为这个问题讲起来可能比较长,所以:

建议看我这篇「Vue源码学\(四\)」立志写一篇人人都看的懂的computed,watch原理[7]

32. Vue.set方法的原理?

33. Vue.delete方法的原理?

34. nextTick的原理?

35. key有什么用?说说diff算法吧?

直接看这篇吧:为什么 Vue 中不要用 index 作为 key?(diff 算法详解)[8]

我讲的没他好

冷门的知识点

36. 如果子组件改变props里的数据会发生什么

改变的props数据是基本类型

如果修改的是基本类型,则会报错

0458e2ff1538ee85d42953cec9a94ca.png

改变的props数据是引用类型

37. props怎么自定义验证

38. watch的immediate属性有什么用?

比如平时created时要请求一次数据,并且当搜索值改变,也要请求数据,我们会这么写:

使用完全可以这么写,当它为时,会初始执行一次

39. watch一个对象时,如何排除某些属性的

下面代码是,params发生改变就重新请求数据,无论是a,b,c,d属性改变

但是如果我只想要a,b改变时重新请求,c,d改变时不重新请求呢?

40. 审查元素时发现data-v-xxxxx,这是啥?

image.png

这是在标记vue文件中css时使用scoped标记产生的,因为要保证各文件中的css不相互影响,给每个component都做了唯一的标记,所以每引入一个component就会出现一个新的'data-v-xxx'标记

41. computed如何实现传参?

42. vue的hook的使用

同一组件中使用

这是我们常用的使用定时器的方式

上面做法不好的地方在于:得全多定义一个timer变量,可以使用hook这么做:

7.2 父子组件使用

如果子组件需要在mounted时触发父组件的某一个函数,平时都会这么写:

使用hook的话可以更方便:

43. provide和inject是响应式的吗?

44.Vue的el属性和$mount优先级?

比如下面这种情况,Vue会渲染到哪个节点上

这是官方的一张图,可以看出和同时存在时, >

image.png45. 动态指令和参数使用过吗?

46. 相同的路由组件如何重新渲染?

人员经常遇到的情况是,多个路由解析为同一个Vue组件。问题是,Vue出于性能原因,默认情况下共享组件将不会重新渲染,如果你尝试在使用相同组件的路由之间进行切换,则不会发生任何变化。

如果依然想重新渲染,怎么办呢?可以使用

47. 自定义v-model

默认情况下,v-model 是 @input 事件侦听器和 :value 属性上的语法糖。但是,你可以在你的Vue组件中指定一个模型属性来定义使用什么事件和value属性——非常棒!

48. 如何将获取data中某一个数据的初始状态?

在中,有时候需要拿初始状态去计算。例如

49.为什么不建议v-for和v-if同时存在

上面的写法是v-for和v-if同时存在,会先把7个元素都遍历出来,然后再一个个判断是否为3,并把3给隐藏掉,这样的坏处就是,渲染了无用的3节点,增加无用的dom操作,建议使用computed来解决这个问题:

50.计算变量时,methods和computed哪个好?

会好一些,因为computed会有。例如index由0变成1,那么会触发视图更新,这时候methods会重新执行一次,而computed不会,因为computed依赖的两个变量num和price都没变。

Sunshine_Lin

点赞和在看就是最的支持

思科ce500交换机怎么重启

广东电信光猫怎么安装

电信e家wifi怎么设置

我打开拍照功能怎么关闭

无线摄像头怎么锁住摄像

为什么要加盟顺丰快递驿站

雪山镇的邮政快递地址是什么

微信视频号怎么发布水果

海西抖音seo优化系统

标签:png dom 视图