我们已经准备好了,你呢?

2024我们与您携手共赢,为您的企业形象保驾护航!

看面试题只是为了检查差距,看看哪些方面你还不明白。切记不要以为只要记住面试题就万事大吉了。最好了解它们背​​后的原理,这样你才能在面试时口若悬河。否则,一个技术中等的面试官一眼就能看出他是真有才华还是只是背诵了面试题(有时间请填写示例中的代码)。

1.您对MVVM的理解是什么?

MVVM是模型-视图-的缩写。

在MVVM架构下,View和Model之间没有直接的联系。相反,Model 和 Model 之间的交互是双向的,因此 View 数据的变化会同步到 Model,而 Model 数据的变化也会立即反应到 View。

View层和Model层通过双向数据绑定连接。视图和模型之间的同步是完全自动的,不需要人工干预。因此,开发者只需要关注业务逻辑,不需要手动操作DOM。注意数据状态的同步。复杂的数据状态维护完全由MVVM管理。

2.Vue生命周期

(创建之前),在数据观察和初始化事件开始之前

(创建后)完成数据观察、属性和方法操作、初始化事件。 $el 属性尚未显示。

(加载前),在加载开始前调用,相关函数第一次被调用。实例完成了如下配置:编译模板,并根据数据中的数据和模板生成html。注意此时html还没有挂载到页面上。

(加载后),el被新创建的vm.$el替换并挂载到实例后调用。实例已完成如下配置:将el属性指向的DOM对象替换为上面编译好的html内容。完成将模板中的html渲染到html页面中。在这个过程中进行Ajax交互。

( ),在数据更新之前调用,发生在虚拟 DOM 重新渲染和修补之前。您可以进一步更改此挂钩中的状态,而无需触发额外的重新渲染过程。

(已更新),由于数据更改而导致虚拟 DOM 重新渲染和修补后调用。调用时,组件 DOM 已更新,因此可以执行依赖于 DOM 的操作。然而,在大多数情况下,应避免在此期间更改状态,因为这可能会导致更新无限循环。在服务器端渲染期间不会调用此钩子。

(销毁前),在实例被销毁之前调用。该实例仍然完全可用。

(销毁后),在实例销毁后调用。调用后,所有事件监听器将被删除,所有子实例将被销毁。在服务器端渲染期间不会调用此钩子。

1、vue的生命周期是怎样的?

答:Vue实例从创建到销毁的过程就是生命周期。从开始创建、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、销毁等一系列过程称为Vue的生命周期。

2、vue生命周期的作用是什么?

答:它的生命周期中有多个事件钩子,让我们在控制整个Vue实例的流程时更容易形成良好的逻辑。

3.Vue生命周期有几个阶段?

答:总共可以分为8个阶段:创建前/后、加载前/后、更新前/后、销毁前/后。

4. 页面第一次加载时会触发哪些钩子?

答:会触发以下情况。

5. DOM渲染是在哪个周期完成的?

答:DOM渲染已经在.

3、Vue实现双向数据绑定原理:.()

Vue 实现双向数据绑定主要是利用数据劫持结合发布者订阅者模型,通过 .() 劫持各个属性,当数据发生变化时向订阅者发布消息,并触发相应的监听回调。当一个普通对象作为其数据选项传递给 Vue 实例时,Vue 将迭代其属性并使用 .() 将它们转换为 / 。 /s 对用户不可见,但在内部它们允许 Vue 跟踪依赖项并在访问和修改属性时通知更改。

Vue的双向数据绑定采用MVVM作为数据绑定的入口,将三者融为一体,通过解析编译模板指令(Vue中用于解析{{}})来监控自身模型的数据变化。最后利用 和 之间的通信桥梁,实现数据变更->视图更新的双向绑定效果;查看交互变化(输入)->数据模型变化。

Node.js 实现简单的双向绑定:

  1.     id="app">

  2.     type="text" id="txt">

  3.     id="show">

  • type="text/javascript">

  •    var obj = {}

  •    Object.defineProperty(obj, 'txt', {

  •        get: function () {

  •            return obj

  •        },

  •        set: function (newValue) {

  •            document.getElementById('txt').value = newValue

  •            document.getElementById('show').innerHTML = newValue

  •        }

  •    })

  •    document.addEventListener('keyup', function (e) {

  •        obj.txt = e.target.value

  •    })

  • 4.Vue组件之间的参数传递

    1.父组件与子组件之间传值

    父组件传递给子组件:子组件通过props方法接收数据;

    子组件传递给父组件:$emit方法传递参数

    2.非父子组件之间的数据传递、兄弟组件之间的值传递

    ,就是创建一个事件中心,相当于一个中转站,可以用来传递事件,也可以用来接收事件。如果项目比较小的话,这个比较合适(虽然很多人推荐直接使用VUEX,但这要看需求,技术只是手段,达到目的才是王道)。

    5.Vue的路由实现:hash模式和模式

    哈希模式:在浏览器中,符号“#”、#以及#后面的字符称为哈希,用..hash读取。特点:虽然hash在URL中,但不包含在HTTP请求中;它用于指导浏览器操作,对服务器端安全无用。哈希不会重新加载页面。

    模式:采用HTML5新特性;并提供了两个新方法:()、()可以修改浏览器历史堆栈并监听状态变化的事件。

    6.Vue 和 React 有什么区别?

    版本不断更新,以下差异可能不正确。我工作中只使用vue,对react不是很熟悉。

    1. 和 的区别

    相似点:都支持指令:内置指令和自定义指令;均支持过滤器:内置过滤器和自定义过滤器;两者都支持双向数据绑定;两者都不支持低端浏览器。

    区别:学习成本较高,比如添加功能,而Vue.js本身提供的API相对简单直观;性能方面,依赖于数据的脏检查,所以越多,速度越慢; Vue.js 使用基于 观察的依赖关系,并使用异步队列更新,所有数据都是独立触发的。

    2. 与React的区别

    相似点:React 使用特殊的 JSX 语法,Vue.js 也建议在组件开发中编写 .vue 特殊文件格式。文件内容有一些约定。两者都需要编译使用;中心思想是相同的:一切都是组件。 ,组件实例可以嵌套;两者都提供了合理的钩子函数,允许开发者定制自己的需求;它们没有内置AJAX、Route等功能到核心包中,而是作为插件加载;在组件开发中支持的功能。

    区别:React使用的DOM会对渲染结果进行脏检查; Vue.js在模板中提供了指令、过滤器等,可以非常方便快捷地操作DOM。

    7.vue路由的hook函数

    首页可以控制导航跳转等,一般用于修改页面标题。某些重定向功能需要登录才能调整页面。

    8.vuex是什么?如何使用?哪些功能场景使用它?

    仅用于读取的状态集中在store中;改变状态的方式是提交,这是一个同步的事情;异步逻辑应该封装在其中。

    将store引入main.js并注入。创建了一个新的目录存储,...。

    场景包括:单页应用中,组件之间的状态、音乐播放、登录状态、添加到购物车

    html文件引入html文件_html引入多个js文件_html中如何引入 js文件

    state:Vuex 使用单一状态树,即每个应用程序只会包含一个 store 实例,但单一状态树与模块化并不冲突。无法直接修改存储的数据状态。

    :定义的方法动态修改Vuex存储中的状态或数据。

    :类似vue的计算属性,主要用来过滤一些数据。

    :可以理解为将处理数据的方法改为可以异步处理数据的方法。简单来说,就是异步操作数据。视图层通过store进行分发。

    1. const store = new Vuex.Store({ //store实例

    2.      state: {

    3.         count: 0

    4.             },

    5.      mutations: {                

    6.         increment (state) {

    7.          state.count++

    8.         }

    9.          },

    10.      actions: {

    11.         increment (context) {

    12.          context.commit('increment')

    13.   }

    14. }

    15. })

    :当项目特别复杂时,每个模块可以有自己的状态,,,,使得结构非常清晰,易于管理。

    1. const moduleA = {

    2.  state: { ... },

    3.  mutations: { ... },

    4.  actions: { ... },

    5.  getters: { ... }

    6. }

    7. const moduleB = {

    8.  state: { ... },

    9.  mutations: { ... },

    10.  actions: { ... }

    11. }

    12. const store = new Vuex.Store({

    13.  modules: {

    14.    a: moduleA,

    15.    b: moduleB

    16. })

    9.其他小知识点

    1.CSS仅作用于当前组件

    答:直接写在style标签里即可,例如:

    2. v-if和v-show的区别

    答:v-if根据条件渲染,v-show为block或none;

    3.$route和$的区别

    答:$route是一个“路由信息对象”,包括path、hash、query、、name等路由信息参数。而$是“路由实例”对象,其中包括路由跳转方法、钩子函数等。

    PS:缺失的案例代码将在未来几天内添加。有些地方可能描述得不够清楚。如果有任何歧义,我可能误解了。

    二维码
    扫一扫在手机端查看

    本文链接:https://by928.com/6920.html     转载请注明出处和本文链接!请遵守 《网站协议》
    我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。

    项目经理在线

    我们已经准备好了,你呢?

    2020我们与您携手共赢,为您的企业形象保驾护航!

    在线客服
    联系方式

    热线电话

    13761152229

    上班时间

    周一到周五

    公司电话

    二维码
    微信
    线