某UI萌妹子想入坑,特整理了一份初级前端高频面试题。
自学前端在刚入门时面试是最艰难的阶段,本章内容都是从各大平台网站汇总过来的,不包含各类源码知识,不至于出现不懂的内容。css
MVVM是Model-View-ViewModel的缩写。MVVM是一种设计思想。Model 层表明数据模型,也能够在Model中定义数据修改和操做的业务逻辑;View 表明UI 组件,它负责将数据模型转化成UI 展示出来,ViewModel 是一个同步View 和 Model的对象。前端
在MVVM架构下,View 和 Model 之间并无直接的联系,而是经过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 所以View 数据的变化会同步到Model中,而Model 数据的变化也会当即反应到View 上。vue
ViewModel 经过双向数据绑定把 View 层和 Model 层链接了起来,而View 和 Model 之间的同步工做彻底是自动的,无需人为干涉,所以开发者只需关注业务逻辑,不须要手动操做DOM, 不须要关注数据状态的同步问题,复杂的数据状态维护彻底由 MVVM 来统一管理。node
mvc和mvvm其实区别并不大。都是一种设计思想。主要就是mvc中Controller演变成mvvm中的viewModel。mvvm主要解决了mvc中大量的DOM 操做使页面渲染性能下降,加载速度变慢,影响用户体验。jquery
区别:vue数据驱动,经过数据来显示视图层而不是节点操做。
场景:数据操做比较多的场景,更加便捷webpack
最多见方法es6
声明式(标签跳转) 编程式( js跳转)web
例若有indexPage命名,使用的时候则index-page面试
webpack中提供了require.ensure()来实现按需加载。之前引入路由是经过import 这样的方式引入,改成const定义的方式进行引入。vue-router
不进行页面按需加载引入方式:import home from '../../common/home.vue'
进行页面按需加载的引入方式:const home = r => require.ensure( [], () => r (require('../../common/home.vue')))
(1)vuex是什么?怎么使用?哪一种功能场景使用它?
vue框架中状态管理。在main.js引入store,注入。新建一个目录store,….. export 。场景有:单页应用中,组件之间的状态。音乐播放、登陆状态、加入购物车
(2)vuex有哪几种属性?
有五种,分别是 State、 Getter、Mutation 、Action、 Module
vuex的Getter特性
vuex的Mutation特性
v-show指令是经过修改元素的display的CSS属性让其显示或者隐藏
v-if指令是直接销毁和重建DOM达到让元素显示和隐藏的效果
将当前组件的<style>
修改成<style scoped>
<keep-alive></keep-alive>
包裹动态组件时,会缓存不活动的组件实例,主要用于保留组件状态或避免从新渲染。
1)采用ES6的import ... from ...语法或CommonJS的require()方法引入组件
2)对组件进行注册,代码以下
// 注册 Vue.component('my-component', { template: '<div>A custom component!</div>' })
3)使用组件<my-component></my-component>
提供一个在页面上已存在的 DOM 元素做为 Vue 实例的挂载目标.能够是 CSS 选择器,也能够是一个 HTMLElement 实例
采用ES6的import ... from ...语法或CommonJS的require()方法引入插件
使用全局方法Vue.use( plugin )使用插件,能够传入一个选项对象Vue.use(MyPlugin, { someOption: true })
vue-router模块的router-link组件。
在router目录下的index.js文件中,对path属性加上/:id。
使用router对象的params.id。
总共分为8个阶段建立前/后,载入前/后,更新前/后,销毁前/后。
(1)、什么是vue生命周期
答: Vue 实例从建立到销毁的过程,就是生命周期。也就是从开始建立、初始化数据、编译模板、挂载Dom→渲染、更新→渲染、卸载等一系列过程,咱们称这是 Vue 的生命周期。
(2)、vue生命周期的做用是什么
答:它的生命周期中有多个事件钩子,让咱们在控制整个Vue实例的过程时更容易造成好的逻辑。
(3)、vue生命周期总共有几个阶段
答:能够总共分为8个阶段:建立前/后, 载入前/后,更新前/后,销毁前/销毁后
(4)、第一次页面加载会触发哪几个钩子
答:第一次页面加载时会触发 beforeCreate, created, beforeMount, mounted 这几个钩子
(5)、DOM 渲染在 哪一个周期中就已经完成
答:DOM 渲染在 mounted 中就已经完成了。
(6)、简单描述每一个周期具体适合哪些场景
答:生命周期钩子的一些使用方法:
v-if:判断是否隐藏;v-for:数据循环;v-bind:class:绑定一个属性;v-model:实现双向绑定
解析.vue文件的一个加载器。
用途:js能够写es六、style样式能够scss或less、template能够加jade等
答:css的预编译。
使用步骤:
特性:
能够用变量,例如($变量名称=值);
能够用混合器,例如()
能够嵌套
当有相同标签名的元素切换时,须要经过 key 特性设置惟一的值来标记以让 Vue 区分它们,不然 Vue 为了效率只会替换相同标签内部的内容。
当 Vue 处理指令时,v-for 比 v-if 具备更高的优先级,经过v-if 移动到容器元素,不会再重复遍历列表中的每一个值。取而代之的是,咱们只检查它一次,且不会在 v-if 为否的时候运算 v-for。
Vue在 页面上渲染的节点,及其子节点称为“虚拟节点 (Virtual Node)”,简写为“VNode”。“虚拟 DOM”是由 Vue 组件树创建起来的整个 VNode 树的称呼。
vue实现响应式并非数据发生变化后dom当即变化,而是按照必定的策略来进行dom更新。
$nextTick是在下次 DOM 更新循环结束以后执行延迟回调,在修改数据以后使用 $nextTick,则能够在回调中获取更新后的 DOM
ref 被用来给元素或子组件注册引用信息。引用信息将会注册在父组件的 $refs 对象上。若是在普通的 DOM 元素上使用,引用指向的就是 DOM 元素;若是用在子组件上,引用就指向组件实例。
使用 babel-polyfill
插件
相同点:
不一样点:
相同点:
不一样点:
优势:前端专门负责前端页面和特效的编写,后端专门负责后端业务逻辑的处理,前端追求的是页面美观、页面流畅、页面兼容等。后端追求的是三高(高并发、高可用、高性能)让他们各自负责各自的领域,让专业的人负责处理专业的事情,提升开发效率
缺点:
欢迎关注公众号「前端进阶课」认真学前端,一块儿进阶。