zoukankan      html  css  js  c++  java
  • VUE学习系列--(一)

    笔者前几年使用的是SSM框架,之后为了紧随主流技术栈,不被社会所淘汰就选择使用JeecgBoot开源版本,那么前后端分离的情况下前端框架使用的VUE全家桶完全PK掉了我,只能从基础知识一步一步学起

    这篇是把VUE官网常用的基础知识搬过来,方便自己的查阅,我只是一个勤快的搬运工

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

     

    data

     

    • 类型:Object | Function

    • 限制:组件的定义只接受 function

    • 详细:

      Vue 实例的数据对象。Vue 将会递归将 data 的 property 转换为 getter/setter,从而让 data 的 property 能够响应数据变化。对象必须是纯粹的对象 (含有零个或多个的 key/value 对):浏览器 API 创建的原生对象,原型上的 property 会被忽略。大概来说,data 应该只能是数据 - 不推荐观察拥有状态行为的对象。

      一旦观察过,你就无法在根数据对象上添加响应式 property。因此推荐在创建实例之前,就声明所有的根级响应式 property。

      实例创建之后,可以通过 vm.$data 访问原始数据对象。Vue 实例也代理了 data 对象上所有的 property,因此访问 vm.a 等价于访问 vm.$data.a

      以 _ 或 $ 开头的 property 不会被 Vue 实例代理,因为它们可能和 Vue 内置的 property、API 方法冲突。你可以使用例如 vm.$data._property 的方式访问这些 property。

      当一个组件被定义,data 必须声明为返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新实例后,我们能够调用 data 函数,从而返回初始数据的一个全新副本数据对象。

      如果需要,可以通过将 vm.$data 传入 JSON.parse(JSON.stringify(...)) 得到深拷贝的原始数据对象。

    • 示例:

      var data = { a: 1 }
      
      // 直接创建一个实例
      var vm = new Vue({
        data: data
      })
      vm.a // => 1
      vm.$data === data // => true
      
      // Vue.extend() 中 data 必须是函数
      var Component = Vue.extend({
        data: function () {
          return { a: 1 }
        }
      })

     

    props

    • 类型:Array<string> | Object

    • 详细:

      props 可以是数组或对象,用于接收来自父组件的数据。props 可以是简单的数组,或者使用对象作为替代,对象允许配置高级选项,如类型检测、自定义验证和设置默认值。

      你可以基于对象的语法使用以下选项:

      • type:可以是下列原生构造函数中的一种:StringNumberBooleanArrayObjectDateFunctionSymbol、任何自定义构造函数、或上述内容组成的数组。会检查一个 prop 是否是给定的类型,否则抛出警告。Prop 类型的更多信息在此
      • defaultany
        为该 prop 指定一个默认值。如果该 prop 没有被传入,则换做用这个值。对象或数组的默认值必须从一个工厂函数返回。
      • requiredBoolean
        定义该 prop 是否是必填项。在非生产环境中,如果这个值为 truthy 且该 prop 没有被传入的,则一个控制台警告将会被抛出。
      • validatorFunction
        自定义验证函数会将该 prop 的值作为唯一的参数代入。在非生产环境下,如果该函数返回一个 falsy 的值 (也就是验证失败),一个控制台警告将会被抛出。你可以在这里查阅更多 prop 验证的相关信息。
    • 示例:

      // 简单语法
      Vue.component('props-demo-simple', {
        props: ['size', 'myMessage']
      })
      
      // 对象语法,提供验证
      Vue.component('props-demo-advanced', {
        props: {
          // 检测类型
          height: Number,
          // 检测类型 + 其他验证
          age: {
            type: Number,
            default: 0,
            required: true,
            validator: function (value) {
              return value >= 0
            }
          }
        }
      })

    watch

    • 类型:{ [key: string]: string | Function | Object | Array }

    • 详细:

      一个对象,键是需要观察的表达式,值是对应回调函数。值也可以是方法名,或者包含选项的对象。Vue 实例将会在实例化时调用 $watch(),遍历 watch 对象的每一个 property。

    • 示例:

      var vm = new Vue({
        data: {
          a: 1,
          b: 2,
          c: 3,
          d: 4,
          e: {
            f: {
              g: 5
            }
          }
        },
        watch: {
          a: function (val, oldVal) {
            console.log('new: %s, old: %s', val, oldVal)
          },
          // 方法名
          b: 'someMethod',
          // 该回调会在任何被侦听的对象的 property 改变时被调用,不论其被嵌套多深
          c: {
            handler: function (val, oldVal) { /* ... */ },
            deep: true
          },
          // 该回调将会在侦听开始之后被立即调用
          d: {
            handler: 'someMethod',
            immediate: true
          },
          // 你可以传入回调数组,它们会被逐一调用
          e: [
            'handle1',
            function handle2 (val, oldVal) { /* ... */ },
            {
              handler: function handle3 (val, oldVal) { /* ... */ },
              /* ... */
            }
          ],
          // watch vm.e.f's value: {g: 5}
          'e.f': function (val, oldVal) { /* ... */ }
        }
      })
      vm.a = 2 // => new: 2, old: 1

    model

    2.2.0 新增

    • 类型:{ prop?: string, event?: string }

    • 详细:

      允许一个自定义组件在使用 v-model 时定制 prop 和 event。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。

    • Example:

      Vue.component('my-checkbox', {
        model: {
          prop: 'checked',
          event: 'change'
        },
        props: {
          // this allows using the `value` prop for a different purpose
          value: String,
          // use `checked` as the prop which take the place of `value`
          checked: {
            type: Number,
            default: 0
          }
        },
        // ...
      })
      <my-checkbox v-model="foo" value="some value"></my-checkbox>

      上述代码相当于:

      <my-checkbox
        :checked="foo"
        @change="val => { foo = val }"
        value="some value">
      </my-checkbox>


  • 相关阅读:
    Java-抽象类第一篇认识抽象类
    Java-JVM第一篇认识JVM
    ECharts-第一篇最简单的应用
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点。
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容并恢复至该时间点
    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
    Oracle 存储过程中的临时表数据自动清空
    oracle闪回,找回已提交修改的记录
    java使字符串的数字加一
    MyEclipse 选中属性或方法后 相同的不变色了?
  • 原文地址:https://www.cnblogs.com/zfy-220/p/14028548.html
Copyright © 2011-2022 走看看