美文网首页
Vue(篇幅一)

Vue(篇幅一)

作者: HW_____T | 来源:发表于2017-09-25 23:27 被阅读0次

关于如何学习Vue,Vue的缔造者尤雨溪前辈曾经在知乎发表过一篇新手向:Vue 2.0 的建议学习顺序
笔者推荐使用Vscode进行Vue项目开发,相比Webstorm,Vscode界面简单,运行时占用体积小。
篇幅二
篇幅三
篇幅四

1. 计算属性和观察者
  1. 计算属性:computed
    Vue推荐任何复杂的数据逻辑,都应当使用计算属性。
    原因如下
    计算属性是基于它们的依赖进行缓存的。计算属性只有在它的相关依赖发生改变时才会重新求值。
  2. 观察者:watch
    Vue 通过 watch 选项提供一个更通用的方法,来响应数据的变化。当你想要在数据变化响应时,执行异步操作或开销较大的操作,这是很有用的。
2. Class和style绑定(:class 和 :style)
  1. 绑定内联样式时,属性名需要使用驼峰值,并且单位需要使用单引号,例如:
    <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div>
    个人觉得没有直接写内联样式方便,可能是还不习惯,但是绑定内联样式时,Vue会为属性自动添加前缀!!!
    所以Vue推荐直接绑定一个样式对象通常更好,让模板更清晰。绑定Class也一样。
3. 条件渲染
  1. v-if、v-else、v-else-if
    v-elsev-else-if必须紧跟在 v-if 或者v-else-if元素之后。
    Vue 会尽可能高效地渲染元素,通常会复用。
    当你不想复用元素时,只需添加一个具有唯一值的 key 属性即可已有元素而不是从头开始渲染。如:
    <input placeholder="Enter your email address" key="email-input">
  2. v-if vs v-show
    v-if是“真正的”条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。v-if也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。
    相比之下,
    v-show就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。
    一般来说,v-if有更高的切换开销,而 v-show有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show较好;如果在运行时条件不太可能改变,则使用 v-if较好。
4. 列表渲染
  1. v-for
    v-for遍历数组时,接受两个参数
    <li v-for="(item, index) in items" :key="item.id">
    v-for遍历对象时,接受三个参数
    <li v-for="(value, key ,index) in objects :key="item.id""
    注:使用v-for时,你需要为每项提供一个唯一 key 属性。
    理想的 (尽可能的使用v-for提供id)key 值是每项都有的且唯一的 id(如上面)。key并不与 v-for 特别关联,key 还具有其他用途。
  2. 数组检测跟新
    Vue 包含一组观察数组的变异方法,所以它们也将会触发视图更新。这些方法如下:
    push(),pop(),shift(),unshift(),splice(),sort()reverse()
    相比之下,也有非变异方法,例如:filter(),concat()slice()
    注意:
    由于 JavaScript 的限制,Vue 不能检测以下变动的数组:
    当你利用索引直接设置一个项时,例如:
    vm.items[indexOfItem] = newValue
    当你修改数组的长度时,例如:vm.items.length = newLength
    为了解决第一类问题,以下两种方式都可以实现和vm.items[indexOfItem] = newValue 相同的效果,同时也将触发状态更新:
    // Vue.set Vue.set(example1.items, indexOfItem, newValue)
    // Array.prototype.splice example1.items.splice(indexOfItem, 1, newValue)
    为了解决第二类问题,你可以使用 splice()
    example1.items.splice(newLength)
  3. 对象更改检测注意事项
    还是由于 JavaScript 的限制,Vue 不能检测对象属性的添加或删除
var vm = new Vue({
data: {
a: 1
}
})
// `vm.a` 现在是响应式的

vm.b = 2
// `vm.b` 不是响应式的

对于已经创建的实例,Vue 不能动态添加根级别的响应式属性。但是,可以使用 Vue.set(object, key, value)方法向嵌套对象添加响应式属性。例如,对于:

var vm = new Vue({
data: {
userProfile: {
name: 'Anika'
}
}
})

你可以添加一个新的 age属性到嵌套的 userProfile 对象:
Vue.set(vm.userProfile, 'age', 27)
你还可以使用 vm.$set实例方法,它只是全局Vue.set的别名:this.$set(this.userProfile, 'age', 27)
有时你可能需要为已有对象赋予多个新属性,比如用 Object.assign()
_.extend()。在这种情况下,你应该用两个对象的属性创建一个新的对象。所以,如果你想添加新的响应式属性,不要像这样:

Object.assign(this.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})

你应该这样做:
this.userProfile = Object.assign({}, this.userProfile, {
age: 27,
favoriteColor: 'Vue Green'
})

相关文章

  • Vue(篇幅一)

    关于如何学习Vue,Vue的缔造者尤雨溪前辈曾经在知乎发表过一篇新手向:Vue 2.0 的建议学习顺序。笔者推荐使...

  • Vue(篇幅三)

    关于如何学习Vue,Vue的缔造者尤雨溪前辈曾经在知乎发表过一篇新手向:Vue 2.0 的建议学习顺序。关于Vue...

  • Vue(篇幅四)

    关于如何学习Vue,Vue的缔造者尤雨溪前辈曾经在知乎发表过一篇新手向:Vue 2.0 的建议学习顺序。关于Vue...

  • Vue(篇幅二)

    关于如何学习Vue,Vue的缔造者尤雨溪前辈曾经在知乎发表过一篇新手向:Vue 2.0 的建议学习顺序。关于Vue...

  • Vue 2.0的项目扩展

    目录 Vue 2.0项目扩展篇主要是讲,Atom插件、Vue依赖库和Vue项目调试,原本是比较长的篇幅,但考虑到每...

  • Cesium开发实战开篇—vite+cesium框架搭建

    在Cesium开发基础篇幅中,我们聊过利用Vue cli搭建Vue2.x+Vesium的框架,但这种方式需要在vu...

  • vue-router原理到最佳实践

    本文是vue-router系列。这里从浏览器到vue-router原理到最佳实践都会有详细的讲解。由于篇幅较长,建...

  • 写作篇幅

    尤其是一些需要长篇幅软文才能论述清楚的问题,从何着手? 1.系列成篇 可以添加小标题、分割线等方式 可以把长篇幅的...

  • 用js实现offset方法

    本来前段时间在整理关于vue组件封装、bind实现、promise实现的文章。但是由于篇幅有点大,并且笔记有些久远...

  • react组件化原理及优化实践

    前言 本文篇幅有点长,希望看完后能给你带去一些收获;主要针对react组件化原理、与vue开发感知上的对比以及一些...

网友评论

      本文标题:Vue(篇幅一)

      本文链接:https://www.haomeiwen.com/subject/tutjextx.html