做网站都有哪些费用网站开发实施方案进度

当前位置: 首页 > news >正文

做网站都有哪些费用,网站开发实施方案进度,律师做推广的网站,网站建设对于学校的重要性每天10道题#xff0c;100天后#xff0c;搞定所有前端面试的高频知识点#xff0c;加油#xff01;#xff01;#xff01;#xff0c;在看文章的同时#xff0c;希望不要直接看答案#xff0c;先思考一下自己会不会#xff0c;如果会#xff0c;自己的答案是什么100天后搞定所有前端面试的高频知识点加油在看文章的同时希望不要直接看答案先思考一下自己会不会如果会自己的答案是什么想过之后再与答案比对是不是会更好一点当然如果你有比我更好的答案欢迎评论区留言一起探讨技术 之美。 目录 面试官请简述一下Vue2中的响应式数据的原理 面试官请简述一下Vue3中的响应式数据的原理 面试官请简述一下Vue是如何检测数组变化 面试官请解释Vue的父子组件生命周期钩子函数执行顺序 面试官请简述一下v-model双向绑定的原理是什么 面试官请简述一下vue-router路由钩子函数是什么执行顺序是什么 面试官请简述一下vue-router动态路由是什么 面试官请简述一下vue-router组件复用导致路由参数失效怎么办 面试官Vue生命周期钩子是如何实现的 面试官如何理解Vue中的模板编译原理 面试官请简述一下Vue2中的响应式数据的原理 我呃~在vue2中响应式数据的原理主要基于Object.defineProperty这个ES5的特性当创建vue实例时vue会遍历data对象的属性使用Object.defineProperty可以将它们转换为getter和setter并对属性值进行监控。 getter函数当访问属性值时getter函数会被调用Watcher会被添加到Dep对象的subs数组中表示这个Watcher依赖于这个属性。 setter函数当属性值发生变化时setter函数会被调用通知Dep对象Dep对象再通知所有依赖于这个属性的Watcher让它们更新视图。 总之vue2中的响应式数据的原理是通过使用Object.defineProperty()对data对象的属性进行劫持建立属性与依赖之间的关系从而实现了数据驱动视图的自动更新。 面试官请简述一下Vue3中的响应式数据的原理 我呃~在vue3中响应式数据的原理主要基于ES6的Proxy对象相较于vue2中的Object.definePropertyvue3采用Proxy来实现对数据的劫持和响应式处理Proxy对象允许一些自定义操作行为如属性查找、赋值等。当创建vue3实例时vue3会使用Proxy对象包装data对象每次访问或修改被Proxy包装的data对象时都会触发相应的拦截器函数。 总之vue3的响应式数据的原理是基于Proxy对象通过代理数据对象监听数据的访问和修改并在数据变化时触发相应的更新操作从而实现了数据驱动视图的自动更新。相比v2在性能和扩展性上都有所提升。 面试官请简述一下Vue是如何检测数组变化 我呃~vue使用不同的方式来检测数组变化具体取决于我们对数组的操作方式如下 vue2在v2中使用了一种叫做 “响应式追踪” 的机制来检测数组变化通过对数组使用的操作方法来修改数组vue能够就能检测到数组的变化举例函数如下 push()、pop()、shift()、unshift()、splice()、sort()、reverse()         因为vue通过重写这些方法使其在执行时可以触发通知告知vue有关数组的变化。这样vue就能够在数据发生变化时及时更新视图然而对于直接通过索引或者length属性修改数组元素的方式vue是无法进行检测的。 vue3在v3中借助ES6的Proxy对象vue可以更加精确地追踪数组的变化对于数组的任何修改包括直接通过索引或length修改都可以被Proxy对象捕捉到从而实现更加完备的数组变化检测。 总之vue通过重写数组的变异方法或者使用proxy对象来检测数组的变化以便在数据发生变化时及时更新视图。 面试官请解释Vue的父子组件生命周期钩子函数执行顺序 我呃~Vue的父子组件生命周期钩子函数执行顺序在Vue 2和Vue 3中有一些差异但整体原则保持一致。下面将分别解释Vue 2和Vue 3的父子组件生命周期钩子函数的执行顺序 Vue2 1创建和挂载阶段 父组件beforeCreate - created - beforeMount 子组件在父组件的beforeMount之后beforeCreate - created - beforeMount - mounted 父组件在所有子组件的mounted之后mounted 2更新阶段 父组件beforeUpdate 子组件在父组件的beforeUpdate之后beforeUpdate - updated 父组件在所有子组件的updated之后updated 3销毁阶段 父组件beforeDestroy 子组件在父组件的beforeDestroy之后beforeDestroy - destroyed 父组件在所有子组件的destroyed之后destroyed Vue3 1创建和挂载阶段 父组件beforeCreate - created - beforeMount 子组件在父组件的beforeMount之后beforeCreate - created - beforeMount - mounted 父组件在所有子组件的mounted之后mounted 2更新阶段 父组件beforeUpdate 子组件在父组件的beforeUpdate之后beforeUpdate - updated 父组件在所有子组件的updated之后updated 3销毁阶段 父组件beforeUnmount 子组件在父组件的beforeUnmount之后beforeUnmount - unmounted 父组件在所有子组件的unmounted之后unmounted 面试官请简述一下v-model双向绑定的原理是什么 我呃~v-model指令是vue中用于实现表单输入元素和应用状态之间双向绑定的一个重要工具其原理可以简单概括如下两个核心点 1监听输入事件并更新数据 2数据变化时更新视图 具体来说v-model 的工作原理可以归纳为以下几个步骤 1绑定数据 2监听输入事件 3更新数据 4视图更新 总之v-model 的双向绑定原理是通过监听表单元素的输入事件来更新数据同时当数据发生变化时自动更新视图来实现的。这种机制使得表单元素和vue实例数据之间能够保持同步从而简化了表单数据的处理流程。 面试官请简述一下vue-router路由钩子函数是什么执行顺序是什么 我呃~路由钩子函数是一组可以在路由导航过程中进行拦截和处理的函数它们允许您在路由导航发生前、发生时或发生后执行逻辑。 vue-router提供了三种类型的路由钩子函数全局前置守卫、全局解析守卫和全局后置钩子。 它们的执行顺序如下 在执行顺序上全局前置守卫会在路由切换开始之前先执行然后是路由独享守卫最后是组件内路由守卫在路由切换过程中这些路由钩子函数会按照定义的顺序依次执行。 1全局前置守卫(beforeEach)在路由切换开始前执行。可以用来进行导航守卫比如进行权限控制或者页面切换前的逻辑处理。 2路由独享守卫(beforeEnter): 在特定路由配置中定义的守卫函数。与全局前置守卫类似但仅应用于特定路由。 3组件内路由守卫(beforeRouteEnter, beforeRouteUpdate, beforeRouteLeave): 在组件内部定义的路由钩子函数用于处理特定组件内的路由变化逻辑。 这些路由钩子函数使得开发者能够在路由切换的不同阶段执行逻辑从而实现诸如路由权限控制、页面加载前的数据预取等功能。 面试官请简述一下vue-router动态路由是什么 我呃~是指在路由路径中包含变量部分这些变量部分可以根据实际情况动态地匹配不同的路径从而实现更加灵活的路由配置。 通过使用动态路由可以实现诸如根据不同的用户ID加载不同的用户详情页面、根据不同的产品ID加载不同的产品详情页面等功能。 动态路由示例如下         假设我们有一个用户详情页面其路由路径为/user/:id其中:id就是动态部分它代表了一个用户的特定ID。当用户访问/user/123时:id会被匹配为123而当用户访问/user/456时:id会被匹配为456以此类推。 总之动态路由为我们提供了一种灵活且简洁的方式来处理路由路径中的变量部分使得我们能够更好地应对不同路径的匹配需求。 面试官请简述一下vue-router组件复用导致路由参数失效怎么办 我呃~组件复用可能导致路由参数失效的情况这种情况通常发生在同一个组件在不同路由间切换时由于组件实例的复用导致原来的路由参数仍然存在于组件内部而没有被更新为新的路由参数为了解决这个问题可以采取以下几种方法 1使用watch监听路由变化         在组件内部使用watch或者beforeRouteUpdate等功能监听路由参数的变化在参数变化时手动更新组件内部的数据。 2使用beforeRouteEnter守卫         在路由配置中使用beforeRouteEnter守卫通过回调函数获取组件实例然后在回调函数内部处理路由参数的变化。 3使用key属性强制组件重新渲染         在路由视图组件中可以通过给组件添加key属性并将其设置为$route.path这样可以强制Vue重新渲染该组件从而避免组件复用导致的路由参数失效问题。 4使用beforeRouteLeave守卫做清理工作         在组件离开路由时可以使用beforeRouteLeave守卫对组件内部的状态进行清理以确保下次组件被复用时不会受到之前路由参数的影响。         通过以上方法可以有效地解决组件复用导致路由参数失效的问题确保路由参数能够正确地传递和更新到组件内部从而维持良好的路由导航体验。 面试官Vue生命周期钩子是如何实现的 我呃~生命周期钩子是Vue实例在创建、更新和销毁过程中自动调用的函数。这些钩子允许开发者在Vue实例的不同阶段执行特定的代码从而实现对Vue实例及其子组件生命周期的管理开发者只需要在Vue实例或组件的选项中定义相应的钩子函数即可。这些钩子函数在Vue实例或组件的生命周期中的特定阶段被自动执行从而允许开发者在这些阶段执行特定的代码。 面试官如何理解Vue中的模板编译原理 我呃~模板编译原理是指将vue模板转换为渲染函数的过程。在vue中模板编译是在运行时进行的vue实例在创建时会将模板字符串经过编译器编译成渲染函数然后再执行渲染函数生成虚拟dom并最终渲染成真实的dom模板编译的主要过程包括以下几个步骤 1模板解析vue的编译器会先将模板字符串解析成抽象语法树AST根据模板中的标签、指令、文本内容等信息构建出一个语法树结构。 2静态标记编译器会对抽象语法树进行静态标记识别出哪些节点是静态的即在每次重新渲染时不会发生变化的部分。 3代码生成根据解析后的抽象语法树编译器会生成可执行的渲染函数这个渲染函数可以接收数据作为参数并返回虚拟dom。 4渲染函数执行当vue实例需要更新视图时会执行之前生成的渲染函数传入最新的数据渲染函数会生成新的虚拟dom并与之前的虚拟dom进行对比计算出需要更新的部分然后将更新应用到真实的dom上。 通过模板编译vue实现了将模板转换为渲染函数的过程这样做的好处是避免了每次数据变化都重新解析模板提高了渲染的效率。同时vue的模板编译也支持一些高级特性例如条件渲染、循环、事件处理等使得开发者可以通过简洁而直观的模板语法来描述视图而无需关心底层的渲染逻辑。