1.什么是vue的生命周期?
Vue实例从创建到销毁的过程,就是生命周期。也就是从开始创建、初始化数据、编译模板、挂载DOM->渲染、更新->渲染、卸载等一系列过程,我们称这是Vue的生命周期。
2. Vue生命周期总共有几个阶段?
它可以总共分为8个阶段:创建前/后,载入前/后,更新前/后,销毁前/销毁后
3. 生命周期的作用是什么?
它的生命周期中有多个事件钩子,让我们在控制整个vue实例的过程时更容易形成好的逻辑。
4. 第一次页面加载会触发那几个钩子?
第一次页面加载时会触发beforeCreate,created,beforeMount,mounted
5. DOM渲染在哪个周期中就已经完成?
DOM渲染在mounted中就已经完成了
6. 生命周期钩子的一些使用方法:
- beforecreate:可以在加个loading事件,在加载实例是触发
- created:初始化完成时的事件写在这里,如在这结束loading事件,异步请求也适宜在这里调用
- mounted:挂载元素,获取到dom节点
- updated:如果对数据统一处理,在这里写上相应函数
- beforeDestroy:可以一个确认停止事件的确认框
- nextTick:更新数据后立即操作dom
7. v-show与v-if的区别?
-show是css切换,v-if是完整的销毁和重新创建, 使用频繁切换时用v-show,运行时较少改变时用v-if。
8. 开发中常用的指令有哪些?
- v-model:一般用在表达输入,很轻松的实现表单控件和数据的双向绑定
- v-html:更新元素的innerHTML
- v-show与v-if:条件渲染,注意二者区别
- v-on:click:可以简写为@click,@绑定一个事件。如果事件触发了,就可以指定事件的处理函数
- v-for:基于源数据多次渲染元素或模板
-v-bind:当表达式的值改变时,将其产生的连带影响,响应式地作用于DOM语法 - v-bind:title=”msg”简写:title=“msg”
9. 路由跳转方式?
- router-link标签会渲染为标签,咋填template中的跳转都是这种;
- 另一种是编辑是导航,也就是通过js跳转比如router.push(’/home’)
10. MVVM是什么?
- M-model,model代表数据模型,也可以在model中定义数据修改和操作的业务逻辑
- V-view,view代表UI组件,它负责将数据模型转化为UI展现出来
- VM-viewmodel,viewmodel监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步view和model的对象,连接model和view
11. computed和watch有什么区别?
- computed是计算属性,也就是计算值,它更多用于计算值的场景,具有缓存性,适用于计算比较消耗性能的计算场景;
- watch用于观察props $emit或者本组件的值,当数据变化时来执行回调进行后续操作,无缓存性,页面重新渲染时值不变化也会执行
12. vue是渐进式的框架的理解?
Vue的核心的功能,是一个视图模板引擎,但这不是说Vue就不能成为一个框架。如下图所示,这里包含了Vue的所有部件,在声明式渲染(视图模板引擎)的基础上,我们可以通过添加组件系统、客户端路由、大规模状态管理来构建一个完整的框架。更重要的是,这些功能相互独立,你可以在核心功能的基础上任意选用其他的部件,不一定要全部整合在一起。可以看到,所说的“渐进式”,其实就是Vue的使用方式,同时也体现了Vue的设计的理念
在我看来,渐进式代表的含义是:主张最少。视图模板引擎
每个框架都不可避免会有自己的一些特点,从而会对使用者有一定的要求,这些要求就是主张,主张有强有弱,它的强势程度会影响在业务开发中的使用方式。
比如说,Angular,它两个版本都是强主张的,如果你用它,必须接受以下东西:
必须使用它的模块机制- 必须使用它的依赖注入- 必须使用它的特殊形式定义组件(这一点每个视图框架都有,难以避免)
所以Angular是带有比较强的排它性的,如果你的应用不是从头开始,而是要不断考虑是否跟其他东西集成,这些主张会带来一些困扰。
Vue可能有些方面是不如React,不如Angular,但它是渐进的,没有强主张,你可以在原有大系统的上面,把一两个组件改用它实现,当jQuery用;也可以整个用它全家桶开发,当Angular用;还可以用它的视图,搭配你自己设计的整个下层用。也可以函数式,都可以,它只是个轻量视图而已,只做了自己该做的事,没有做不该做的事,仅此而已。
渐进式的含义,我的理解是:没有多做职责之外的事。