Vue.js在使用中的一些注意知识点


Posted in Javascript onApril 29, 2017

本文介绍的Vue.js在使用中的一些注意知识点,对大家具有一定的参考价值,下面来看看详细的介绍吧。

  • 每个 Vue 实例都会代理其 data 对象里所有的属性。
  • 注意只有这些被代理的属性是响应的。如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。
  • 除了 data 属性,Vue实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀 $,以便与代理的 data 属性区分。

模板语法

  • Vue.js 使用了基于HTML的模版语法,允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML ,所以能被遵循规范的浏览器和 HTML 解析器解析。
  • 在底层的实现上, Vue 将模板编译成虚拟DOM 渲染函数。结合响应系统,在应用状态改变时, Vue 能够智能地计算出重新渲染组件的最小代价并应用到 DOM 操作上。
  • Mustache里面只能是JS表达式,否则不会生效。
  • 指令的职责就是当其表达式的值改变时相应地将某些行为应用到 DOM 上。
  • 过滤器设计目的就是用于文本转换,为了在其他指令中实现更复杂的数据变换,你应该使用计算属性。

计算属性

  • 计算属性方法在组件 beforeMount 之后,Mounted 之前都会执行一遍。
  • 计算属性方法可以没有返回值。但是该属性使用,即在模板中使用了,否则不起任何作用。
  • 不经过计算属性,我们可以在method中定义一个相同的函数来替代它。对于最终的结果,两种方式确实是相同的。然而,不同的是计算属性是基于它的依赖缓存。计算属性只有在它的相关依赖发生改变时才会重新取值。这就意味着只要message没有发生改变,多次访问reversedMessage(computed内的一个方法)计算属性会立即返回之前的计算结果,而不必再次执行函数。
  • 计算属性是依赖缓存的;而methods是没有缓存的,每次都执行一遍。
  • 计算属性默认只有getter,不过在需要时你也可以提供一个 setter。参考官方实例:https://cn.vuejs.org/v2/guide/computed.html#计算-setter
  • 当你想要在数据变化响应时,执行异步操作或开销较大的操作,water方法(或者 vm.$watch API)是很有用的。

条件渲染

  • 不同的是有 v-show 的元素会始终渲染并保持在 DOM 中。v-show 是简单的切换元素的 CSS 属性 display 。
  • 一般来说, v-if 有更高的切换消耗而 v-show 有更高的初始渲染消耗。因此,如果需要频繁切换使用 v-show 较好,如果在运行时条件不大可能改变则使用 v-if 较好。
  • vue尝试尽可能高效的渲染元素,通常会复用已有元素而不是从头开始渲染。但是条件渲染的时候,有时需要重新渲染而不是服用已有元素,所以可以通过设置唯一的key来实现元素不复用。参考官方例子:https://cn.vuejs.org/v2/guide/conditional.html#使用-key-控制元素的可重用

列表渲染

  • 在遍历对象时,是按 Object.keys() 的结果遍历,但是不能保证它的结果在不同的 JavaScript 引擎下是一致的。
  • v-for 也可以取整数。在这种情况下,它将重复多次模板。
  • 在用 v-for 渲染组件的时候,不能自动传递数据到组件里,因为组件有自己独立的作用域。为了传递迭代数据到组件里,我们要用 props。不自动注入 item 到组件里的原因是,因为这使得组件会紧密耦合到 v-for 如何运作。

表单控件

  • 对于单选按钮,勾选框及选择列表选项, v-model 绑定的 value 通常是静态字符串(对于勾选框是逻辑值)。

组件

  • 在 Vue 里,一个组件实质上是一个拥有预定义选项的一个 Vue 实例。
  • 使用组件时,大多数选项可以被传入到Vue构造器中,有一个例外: data 必须是函数。 原因的话,因为组件可能被多次调用,当data为普通对象时,data内的数据会被共享,当为函数的时候,则每个组件生成的为独立data作用域。
  • 在 Vue.js 中,父子组件的关系可以总结为 props down, events up 。父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。
  • 注意在 JavaScript 中对象和数组是引用类型,指向同一个内存空间,如果 prop 是一个对象或数组,在子组件内部改变它会影响父组件的状态。
  • Vue的事件系统分离自浏览器的EventTarget API。尽管它们的运行类似,但是on和on和emit 不是addEventListener 和 dispatchEvent 的别名。
  • $refs 只在组件渲染完成后才填充,并且它是非响应式的。它仅仅作为一个直接访问子组件的应急方案——应当避免在模版或计算属性中使用 $refs 。

响应原理

vue中的数据双向绑定中,只有改变vue实例上的属性时才能动态更新试图。

当data中有一个属性为对象和数组时,直接修改对象和数组的某一项数据是没办法触发试图更新的。https://vuefe.cn/v2/guide/list.html#注意事项 https://vuefe.cn/v2/guide/reactivity.html#变化检测问题

数组解决方式:

Vue.set(example1.items, indexOfItem, newValue);
example1.items.splice(indexOfItem, 1, newValue)

对象只能用第一种方式。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于jquery 的一个progressbar widge
Oct 29 Javascript
JS中动态添加事件(绑定事件)的代码
Jan 09 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
JavaScript 操作table,可以新增行和列并且隔一行换背景色代码分享
Jul 05 Javascript
JS获取图片lowsrc属性的方法
Apr 01 Javascript
JavaScript中的原型继承基础学习教程
May 06 Javascript
Javascript typeof与instanceof的区别
Oct 18 Javascript
jquery实现弹窗功能(窗口居中显示)
Feb 27 Javascript
vue.js中过滤器的使用教程
Jun 08 Javascript
vue使用video.js进行视频播放功能
Jul 18 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
quickjs 封装 JavaScript 沙箱详情
Nov 02 Javascript
jQuery实现按比例缩放图片的方法
Apr 29 #jQuery
Vue开发中整合axios的文件整理
Apr 29 #Javascript
Vue.js教程之axios与网络传输的学习实践
Apr 29 #Javascript
jQuery输入框密码的显示隐藏【代码分享】
Apr 29 #jQuery
jQuery实现多张图片上传预览(不经过后端处理)
Apr 29 #jQuery
jQuery设置图片等比例缩小的方法
Apr 29 #jQuery
Angular2下使用pdf插件的方法详解
Apr 29 #Javascript
You might like
php判断文件上传类型及过滤不安全数据的方法
2014/12/17 PHP
php获取开始与结束日期之间所有日期的方法
2016/11/29 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
javascript 装载iframe子页面,自适应高度
2009/03/20 Javascript
一个XML格式数据转换为图表的例子
2010/02/09 Javascript
跨浏览器的 mouseenter mouseleave 以及 compareDocumentPosition的使用说明
2010/05/04 Javascript
基于jquery的跨域调用文件
2010/11/19 Javascript
基于jQuery实现图片的前进与后退功能
2013/04/24 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
温故知新——JavaScript中的字符串连接问题最全总结(推荐)
2017/08/21 Javascript
Vue 通过自定义指令回顾v-内置指令(小结)
2018/09/03 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
微信小程序中的上拉、下拉菜单功能
2020/03/13 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[01:14]3.19DOTA2发布会 三代刀塔人第二代
2014/03/25 DOTA
[56:41]iG vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/17 DOTA
python基于Selenium的web自动化框架
2019/07/14 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Django的ListView超详细用法(含分页paginate)
2020/05/21 Python
关于python scrapy中添加cookie踩坑记录
2020/11/17 Python
python爬虫调度器用法及实例代码
2020/11/30 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
美国体育用品商店:Rally House(NCAA、NFL、MLB、NBA、NHL和MLS)
2018/01/03 全球购物
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
英国在线发型和美容产品商店:Beauty Cutie
2019/04/27 全球购物
使用索引(Index)有哪些需要考虑的因素
2016/10/19 面试题
公司董事长职责
2013/12/12 职场文书
财产公证书
2014/04/10 职场文书
高中教师评语大全
2014/04/25 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
理想演讲稿范文
2014/05/21 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
微信小程序纯CSS实现无限弹幕滚动效果
2022/09/23 HTML / CSS