一个可爱的UI妹子想入坑,所以特意整理了一道基础前端高频面试题。自学前端面试是刚入门最难的阶段。本章内容是从各大平台网站总结而来,不包含各种源码知识,所以不会有你看不懂的内容。1、什么是MVVM?MVVM是模型-视图-视图模型的缩写。MVVM是一种设计理念。Model层代表数据模型,数据修改和操作的业务逻辑也可以定义在Model中;View代表UI组件,负责将数据模型转换成UI显示,ViewModel是同步View和Model的对象。MVVM架构下,View和Model之间没有直接联系,而是通过ViewModel进行交互。Model和ViewModel之间的交互是双向的,所以View数据的变化会同步到Model,同时Model数据的变化也会立即反映到View上。ViewModel通过双向数据绑定连接View层和Model层,View和Model之间的同步是完全自动的,不需要人为干预,所以开发者只需要关注业务逻辑,不需要手动操作DOM。需要注意数据状态的同步,复杂数据状态的维护完全由MVVM管理。二、mvvm和mvc的区别?它和其他框架(jquery)有什么区别?适合哪些场景?其实mvc和mvvm并没有太大区别。一切都与设计思维有关。主要原因是mvc中的Controller进化成了mvvm中的viewModel。mvvm主要解决mvc中大量DOM操作,降低页面渲染性能,拖慢加载速度,影响用户体验。区别:Vue是数据驱动的,用数据来展示视图层,而不是节点操作。场景:数据操作较多的场景更方便。3、Vue有什么优势?低耦合。视图(View)可以独立于模型进行更改和修改,以实现可重用性。您可以将一些视图逻辑放在ViewModel中,让许多视图重用该视图逻辑。自主开发。开发人员可以专注于业务逻辑和数据开发(ViewModel),设计师可以专注于页面设计。可测试的。接口一直很难测试,但现在可以为ViewModel编写测试。4.组件之间传值?最常见的方式是父组件通过props传递数据给子组件,子组件通过$emit方法传递参数给父组件。5.路由间跳转Declarative(标签跳转)Programmatic(js跳转)如何使用自定义组件?你遇到过什么问题吗?在组件目录中创建组件文件(indexPage.vue)。脚本必须exportdefault{}并导入到你需要的页面(组件)中:importindexPagefrom'@/components/indexPage.vue'并注入到vue的子组件中components属性上面,components:{indexPage}是在templateview视图中使用,例如命名为indexPage,使用时为index-page七、vue如何实现按需加载和webpack设置?实现按需加载。以前路由是通过import导入的,现在改为const定义。不按需加载页面的导入方式:importhomefrom'../../common/home.vue'按需加载页面的导入方式:consthome=r=>require.ensure([],()=>r(require('../../common/home.vue')))八、Vuex面试相关(一)什么是vuex?如何使用?哪些功能场景使用它?vue框架中的状态管理。在main.js中引入store和inject。创建一个新的目录存储,.....导出。场景包括:单页应用程序中组件之间的状态。音乐播放、登录状态、加入购物车(二)vuex有哪些属性?一共有五种,分别是State、Getter、Mutation、Action,还有Modulevuex的State特性。Vuex是一个仓库,仓库里有很多对象。其中,state是数据源存储位置,对应于datastate中存储的数据,一般vue对象是响应式的,vue组件从store中读取数据,如果store中的数据发生变化,依赖的组件对这个数据也会发生更新,通过mapState将全局状态和getter映射到当前组件的计算属性。vuex的Getter特性getters可以对State进行计算操作。它是Store的计算属性。虽然也可以作为组件中的计算属性使用,但是getters可以在多个组件之间复用,如果一个state只在一个组件中使用,可以直接修改数据,不需要gettersvuex的Mutation特性。Mutation提交一个突变而不是直接改变状态。Action可以包含任何异步操作。9.v-show和v-if指令的异同v-show指令是修改元素的displayCSS属性,使其显示或隐藏。v-if指令是直接销毁重建DOM使元素显示和隐藏十、如何让CSS只在当前组件起作用将当前组件的
