Vue常见知识点

I. 什么是 MVVM?

MVVM是 Model-View-ViewModel 的缩写。它是一种设计思想。Model 层代表数据模型,也可以在 Model 中定义数据修改和操作的业务逻辑;View 代表UI组件,它负责将数据模型转化成 UI展现出来;ViewModel 是一个同步 ViewModel 的对象。

MVVM架构下,ViewModel 之间并没有直接的联系,而是通过 ViewModel 进行交互,ModelViewModel之间的交互是双向的,因此 View 数据的变化会同步到 Model 中,而 Model 数据的变化也会立即反应到 View 上。

ViewModel 通过双向数据绑定把 View 层 和 Mode 层连接了起来,而 ViewModel 之间的同步工作完全是自动的,不需要手动去操作 DOM 节点,不需要灌输主句状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

II. MVVM 和 MVC 的区别?

MVCMVVM 都是一种设计思想。主要区别是 MVCController 演变成了 MVVM 中的 ViewModelMVVM* 主要解决了 MCV 中大量的 DOM** 操作是页面渲染性能降低,加载速度变慢,从而影响了用户体验。 而且当 Model 层数据频繁发生变化时,开发者需要手动更新 View 层。

III. Vue的优点是什么?
  • a. 低耦合。视图层(View) 可以独立于 Model 变化和修改,一个 ViewModel 可以绑定到不同改的 View 上,当 View 发生变化 Model 可以不变,当 Model 变化的时候 View 也可以不变。
  • b. 可重用性。你可以把一些视图层逻辑放在一个 ViewModel 中,让很多 View 重用这段视图逻辑。
  • c. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用 Expression Blend 可以很容易设计界面并生成 xml 代码。
  • d. 可测试。界面素来是比较难于测试的,而现在测试可以针对 ViewModel 来写专门的测试代码。
IV. Vue2.0生命周期是什么?

Vue 的生命周期总共有 创建前/后,载入前/后,销毁前/后。

  • a. 创建前/后:在 beforeCreate 阶段,Vue 实例的挂载元素 el 和数据对象 data 都为 undefined ,还未初始化。在 create 阶段,vue 实例的数据对象 data 有了值,但 el 仍然没有。
  • b. 载入前/后:在 beforeMount 阶段,Vue 实例的 $eldata 都初始化了,但还是挂载之前虚拟的 DOM 节点,data.message 还未替换。在 mounted 阶段,Vue 实例挂载完成,data.message 成功渲染。
  • c. 更新前/后:当 data 发生变化时,会触发 beforeUpdateupdate 方法。
  • d. 销毁前/后: 在执行 destroy 方法后,对 data的改变不会再触发周期函数,说明此时 Vue 实例已经解除了事件监听以及和 DOM 的绑定,但是 DOM结构依然存在。
V. Vue1.0Vue2.0的对比
  • 1.片段代码: 在 Vue2.0 中,每个组件模板中,必须有一个根元素,来包裹所有的元素。

        <template>        <h3>我是组件</h3><strong>我是加粗标签</strong>    </template><!-- 现在:  必须有根元素,包裹住所有的代码 -->    <template id="aaa">            <div>                <h3>我是组件</h3>                <strong>我是加粗标签</strong>            </div>    </template>
  • 2.生命周期见下表
vue1.0 vue2.0 描述
init beforeCreate 组件实例刚被创建,组件属性计算之前,如 data 属性等。
created created 组件实例创建完成,属性已绑定,但 DOM 还未生成,$el属性还不存在。
beforeCompile boforeMount 模板编译/挂载之前
compiled mounted 模板编辑/挂载之后
ready mounted 模板编译/挂载之后(不保证组件已在 document 中)
- beforeUpdate 组件更新之前
- updated 组件更新之后
- activated for keep-alive ,组件被激活时调用
- deactivated for keep-alive ,组件被移除时调用
attached - -
deattached - -
beforeDestroy beforeDestroy 组件销毁前调用
destroyed destroyed 组件销毁后调用
  • 3.过滤器
    2.0 删除了 1.0 所有自带的过滤器,将不再是传参的方式调用,如下:

    {{msg | mimi '12' '5'}}

    而现在2.0中,要使用过滤器,必须要自定义一个过滤器:

    Vue.filter('toDou',function(n,a,b){    return n<10?n+a+b:''+n;});
    
    //调用过滤器{{msg | mimi('12','5')}}
  • 4.v-for循环
    • 在1.0中循环渲染时会使用到 tranck-by="$indec"来提高for循环的性能,而在2.0,使用重复数据将不会报错,同时也去掉了一些隐式变量如:index 、 key,如果要用到 indexkey 则可通过 ES6的语法来获取:

      v-for="(val,index) in rows"
    • 关于整数循环,1.0的整数循环是从0开始的,2.0的整数循环则是从1开始的。

原文:大专栏  Vue常见知识点

原文地址:https://www.cnblogs.com/chinatrump/p/11596979.html

时间: 2024-09-29 20:36:47

Vue常见知识点的相关文章

iOS 常见知识点(三):Lock

iOS 常见知识点(一):Runtime iOS 常见知识点(二):RunLoop 锁是最常用的同步工具.一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简单的互斥锁,另一个线程 B 就无法访问,只有等待前一个线程 A 执行完被保护的代码后解锁,B 线程才能访问被保护代码. iOS 中的八大锁 NSLock @protocol NSLocking - (void)lock; - (void)unlock; @end @interface NSLock :

Linux常见命令及常见知识点

Linux常见命令及常见知识点(学习) 绝对路径表示, 如:/etc/http.d 当前目录: ./ 上层目录: ../ 主目录:~/ 切换目录:cd 查看当前路径: pwd 查看当前进程:ps 显示所有进程: ps -ef (system v 输出) / ps -aux bsd 格式输出 查看指定进程信息:ps -ef | grep pid 执行退出:exit 清屏:clear 退出当前命令: ctrl + c (彻底退出) 执行睡眠:ctrl + z (挂起当前进程 恢复后台) 查看当前用户

【转】[总结]vue开发常见知识点及问题资料整理(持续更新)

1.(webpack)vue-cli构建的项目如何设置每个页面的title 2.vue项目中使用axios上传图片等文件 3.qs.stringify() 和JSON.stringify()的区别以及在vux中使用post提交表单数据需要qs库序列化 4.vue中实现全局的setCookie,getCookie以及delCookie方法笔记 5.webpack中alias配置中的"@"是什么意思? 6.webpack proxyTable 代理跨域 7.如何在 vue 项目里正确地引用

法律常见知识点梳理

本文主要内容来自网络,自己只是做了内容整合的工作欢迎转载,转载请注明出处. Technorati 标签: 法律,常识 --------------------------------------------- 本文主要内容来源自 知乎的两个链接,普通人应该知道哪些法律常识? 和 知道哪些法律上的小常识可以保护自己?     将根据现行法律的各个方面来汇总一些普通人应该知道的法律常识,帮助我们在遇到一些法律问题的时候,更加清楚的知道自己的权利和义务.避免因为对法律的不了解而产生恐惧心理,在受到伤害

C++及数据结构笔试面试常见知识点总结

一些常考的基础知识点个人总结,大神勿喷,欢迎指正. 1.广义表的表尾是指除去表头后剩下的元素组成的表,表头可以为表或单元素值.表尾或为表,或为空表. 2.构造函数不能声明为虚函数. 构造函数为什么不能是虚函数? 1. 从存储空间角度,虚函数对应一个指向vtable虚函数表的指针,这大家都知道,可是这个指向vtable的指针其实是存储在对象的内存空间的.问题出来了,如果构造函数是虚的,就需要通过 vtable来调用,可是对象还没有实例化,也就是内存空间还没有,怎么找vtable呢?所以构造函数不能

Dev Express Report 学习总结(七)Dev Express Reports 常见知识点总结

1. 常见表达式: A. For percent: [ValA]* 100 / ([ValA]+[ ValB]);           PS. Please remreber to set the file type for the CalculatedField to Float B. Using the Aggregate Expression with grouped data: [][[^.ColumnName] == [ColumnName] AND [VisitStatus] !=

记vue API 知识点

1. v-cloak指令:这个指令保持在元素上直到关联实例结束编译.和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕. <div> {{msg}} </div> msg不会显示知道vue实例编译结束,这样就不会导致出现空白. 2.

推荐系统之常见知识点总结

1.基于user的协同过滤: 先挖掘出与用户相似兴趣的人群,再从这些相似人群中的人所喜欢的东西但是用户还没喜欢过的内容. 举个例子:对于做android开发的初学者来说,他想要知道android开发要学习哪些知识点,看哪些书,那么对于初学者来说他的兴趣点是android开发,那么我们就可以找到一群android开发人员,然后就可以提取出这些android开发者平时所看得比较多的书,和平时讨论的比较多的知识点推荐给这个android初学者,那么这个就叫作基于user的协同过滤. 可以看出来,我们先

Vue零散知识点

1.vue中的<router-view></router-view>的作用,它是和vue的路由相结合的,它的作用是将路由匹配到的组件渲染在里面.比如说你要跳转,如何没有<router-view></router-view>,那么跳转不成功 1 <script src="https://unpkg.com/vue/dist/vue.js"></script> 2 <script src="https: