Vue越来越火了。放眼国内外,无论是BAT这样的大厂,还是初创公司,Vue都有广泛的应用。面试的时候,Vue相关的技术原理也是必须的。可以说,对于任何一个前端工程师来说,掌握Vue可能都不是一个选项,而更像是一门“必修课”。很多人直接在elementui等UI框架上做vue项目。这些框架虽然在效率上给了我们很大的帮助,但是并没有提升我们的技术。核心技术你肯定答不上来。对于一个开发者来说,如果只停留在一个技术框架的使用上,而从来不了解这个框架中核心技术的实现原理和背后的设计思想,想在技术这条路上走下去肯定走不通远的。作为一名开发者,我有着非常深刻的体会。在这里我也想给大家推荐一下。ui框架antDesignvue的作者在极客时间推出了一个名为vue开发实战的课程(文末有购买链接)。我自己也买了这个课程,觉得还不错。带你掌握Vue的技术原理和应用,了解它的底层原理。通过项目实战,你将具备独立负责Vue前端项目的能力,对你的跳槽和面试以及Vue入门都有很大的帮助。包括我在内的很多买家也觉得干货满满。推荐给所有有需要的人。好了,进入正题,今天我就来给大家带来一些Vue面试的进阶题。1、什么是MVVM?答:MVVM是Model-View-ViewModel的缩写。Model代表数据模型,定义了数据操作的业务逻辑。View代表视图层,负责将数据模型渲染到页面。ViewModel通过双向绑定来同步View和Model。交互,一种不需要手动操作DOM的设计思想。2、如何定义vue-router的动态路由?如何获取传递的动态参数?答:在router目录下的index.js文件中,在path属性中添加/:id。vue-router使用路由器对象的params.id3有什么样的导航钩子?答:三种,一种是全局导航钩子:router.beforeEach(to,from,next),作用:跳转前判断拦截。第二种:组件中的hooks;第三种:独立路由和独占组件4、什么是vuex?如何使用?哪些功能场景使用它?答:vue框架中的状态管理。在main.js中引入store和inject。创建了一个新的目录存储,.....导出。场景包括:单页应用程序中组件之间的状态。音乐播放、登录状态、加入购物车5、MVVM和MVC的区别?它与其他框架(jquery)有何不同?适用于哪些场景?答:MVVM和MVC都是一种设计思想。主要原因是MVC中的Controller进化成了ViewModel。MVVM主要使用数据来展示视图层,而不是操作节点,解决了MVC中大量DOM操作降低页面渲染性能的问题。加载速度慢,影响用户体验。主要用于数据操作较多的场景。场景:数据操作比较多的场景,比较方便6.Vue的双向数据绑定原理是什么?答:vue.js采用数据劫持结合发布订阅者模式,通过Object.defineProperty()劫持各个属性的setter和getter,当数据发生变化时向订阅者发布消息,并触发相应的监听回调。7、请说说封装vue组件的过程?答:首先,组件可以提高整个项目的开发效率,可以将页面抽象成多个相对独立的模块,解决了我们传统项目开发效率低、维护难、复用性差的问题。然后,使用Vue.extend方法创建一个组件,然后使用Vue.component方法注册组件。子组件需要数据,数据可以接受props中的定义。子组件修改数据后,想把数据传递给父组件。可以使用launch方法8.谈谈你对Vue.js模板编译的理解答:简单来说就是先转成AST树,然后渲染函数返回VNODE(Vue的虚拟DOM节点)详细步骤:首先,模板通过编译器编译成AST语法树(抽象语法树是源代码抽象语法结构的树状表示)。Compilation是createCompiler的返回值,用于创建编译器。负责合并选项。然后,会生成AST(将AST语法树转换成渲染函数字符串的过程)得到渲染函数。渲染的返回值是VNode,也就是Vue的虚拟DOM节点,里面包含(标签名,子节点,文本等)9.
