zoukankan      html  css  js  c++  java
  • VueJS教程4

    参考:


    目录:

    • 15、Vue指令
      • 15.1 全局配置(Vue.config)
        • silent(默认值:false),配置为true,取消Vue所有的日志与警告
        • optionMergeStrategies:自定义合并策略的选项
        • devtools:配置是否允许vue-devtools检查代码
        • errorHandler:指定组件的渲染和观察期间未捕获错误的处理函数。这个处理韩式被调用时,可获取错误信息和Vue实例
        • wareHandler:为Vue的运行时警告赋予一个自定义处理函数。注意这只会在开发环境下生效,在生产环境下会被忽略
        • ignoredElements
        • keyCodes:定义全局的键值,如给 v-on 自定义键位别名
        • performance:设置为 true 以在浏览器开发工具的性能/时间线面板中启用对组件初始化、编译、渲染和打补丁的性能追踪。只适用于开发模式和支持 performance.mark API 的浏览器上
        • productionTip:设置为 false 以阻止 vue 在启动时生成生产提示
      • 15.2 全局API
        • (1)Vue.extend(options):使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象
        • (2)Vue.nextTick([callback, context]):在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM
        • (3)Vue.set( target, propertyName/index, value )
        • (4)Vue.delete( target, propertyName/index )
        • (5)Vue.directive( id, [definition] ):注册或获取全局指令,如自定义指令中使用。
        • (6)Vue.filter( id, [definition] ):注册或获取全局过滤器。
        • (7)Vue.component( id, [definition] ):注册或获取全局组件。注册还会自动使用给定的id设置组件的名称
        • (8)Vue.use( plugin ):安装 Vue.js 插件。
        • (9)Vue.mixin( mixin ):全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。
        • (10)Vue.compile( template ):在 render 函数中编译模板字符串。
        • (11)Vue.observable( object ):2.6.0 新增,让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。
        • (12)Vue.version:提供字符串形式的 Vue 安装版本号。
      • 15.3 选项 / 数据
        • (1)data
        • (2)props
        • (3)propsData
        • (4)computed
        • (5)methods
        • (6)watch
      • 15.4 选项 / DOM
        • (1)el
        • (2)template
        • (3)render
        • (4)renderError
      • 15.5 选项 / 资源
        • (1)directives
        • (2)filters
        • (3)components
      • 15.6 选项 / 组合
        • (1)parent
        • (2)mixins
        • (3)extends
        • (4)provide / inject
      • 15.7 选项 / 其它
        • (1)name
        • (2)delimiters
        • (3)functional
        • (4)model
        • (5)inheritAttrs
        • (6)comments
      • 15.8 实例属性
        • (1)vm.$data:Vue 实例观察的数据对象。Vue 实例代理了对其 data 对象属性的访问。
        • (2)vm.$props:当前组件接收到的 props 对象。Vue 实例代理了对其 props 对象属性的访问。
        • (3)vm.$el:Vue 实例使用的根 DOM 元素。
        • (4)vm.$options:用于当前 Vue 实例的初始化选项。需要在选项中包含自定义属性时会有用处:
          new Vue({
            customOption: 'foo',
            created: function () {
              console.log(this.$options.customOption) // => 'foo'
            }
          })

            输出结果:略。

        • (5)vm.$parent:父实例,如果当前实例有的话。
        • (6)vm.$root:当前组件树的根 Vue 实例。如果当前实例没有父实例,此实例将会是其自己。
        • (7)vm.$children:当前实例的直接子组件。需要注意 $children 并不保证顺序,也不是响应式的。如果你发现自己正在尝试使用 $children 来进行数据绑定,考虑使用一个数组配合 v-for 来生成子组件,并且使用 Array 作为真正的来源。
        • (8)vm.$slots:用来访问被插槽分发的内容。每个具名插槽 有其相应的属性 (例如:v-slot:foo 中的内容将会在 vm.$slots.foo 中被找到)。default 属性包括了所有没有被包含在具名插槽中的节点,或 v-slot:default 的内容。
        • (9)vm.$scopedSlots:用来访问作用域插槽。对于包括 默认 slot 在内的每一个插槽,该对象都包含一个返回相应 VNode 的函数。
        • (10)vm.$refs:一个对象,持有注册过 ref 特性 的所有 DOM 元素和组件实例。
        • (11)vm.$isServer:当前 Vue 实例是否运行于服务器。
        • (12)vm.$attrs:包含了父作用域中不作为 prop 被识别 (且获取) 的特性绑定 (class 和 style 除外)。当一个组件没有声明任何 prop 时,这里会包含所有父作用域的绑定 (class 和 style 除外),并且可以通过 v-bind="$attrs" 传入内部组件——在创建高级别的组件时非常有用。
        • (13)vm.$listeners:包含了父作用域中的 (不含 .native 修饰器的) v-on 事件监听器。它可以通过 v-on="$listeners" 传入内部组件——在创建更高层次的组件时非常有用。
      • 15.9 实例方法 / 数据
        • (1)vm.$watch( expOrFn, callback, [options] )
        • (2)vm.$set( target, propertyName/index, value )
        • (3)vm.$delete( target, propertyName/index )
      • 15.10 实例方法 / 事件
        • (1)vm.$on( event, callback )
        • (2)vm.$once( event, callback )
        • (3)vm.$off( [event, callback] )
        • (4)vm.$emit( eventName, […args] )
      • 15.11 实例方法 / 生命周期
        • (1)vm.$mount( [elementOrSelector] )
        • (2)vm.$forceUpdate()
        • (3)vm.$nextTick( [callback] )
        • (4)vm.$destroy()
      • 15.12 指令
        • (1)v-text:预期:string
        • (2)v-html:预期:string
        • (3)v-show:根据表达式之真假值,切换元素的 display CSS 属性。
        • (4)v-if:根据表达式的值的真假条件渲染元素。在切换时元素及它的数据绑定 / 组件被销毁并重建。
        • (5)v-else:不需要表达式。限制:前一兄弟元素必须有 v-if 或 v-else-if。
        • (6)v-else-if:限制:前一兄弟元素必须有 v-if 或 v-else-if。
        • (7)v-for:预期:Array | Object | number | string | Iterable (2.6 新增)
        • (8)v-on:预期:Function | Inline Statement | Object
        • (9)v-bind:预期:any (with argument) | Object (without argument)
        • (10)v-model:预期:随表单控件类型不同而不同。
        • (11)v-slot:预期:可放置在函数参数位置的 JavaScript 表达式 (在支持的环境下可使用解构)。可选,即只需要在为插槽传入 prop 的时候使用。
        • (12)v-pre:不需要表达式。跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。
        • (13)v-cloak:不需要表达式。这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的 Mustache 标签直到实例准备完毕。
        • (14)v-once:不需要表达式。只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

      接着VueJS教程3


    15、Vue指令

    15.1 全局配置(Vue.config)

    15.2 全局API

    (1)Vue.extend(options)

      使用基础 Vue 构造器,创建一个“子类”。参数是一个包含组件选项的对象。
      data 选项是特例,需要注意 - 在 Vue.extend() 中它必须是函数。

    var CompA = { ... }
    
    // 在没有调用 `Vue.extend` 时候继承 CompA
    var CompB = {
      extends: CompA,
      ...
    }

      1、第一种用法,挂在元素上

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="mount-point"> </div>
    12 
    13     <script>
    14         // 创建构造器
    15         var Profile = Vue.extend({
    16             template: `<p>{{firstName}} {{lastName}} aka {{alias}}</p>`,
    17             data: function () {
    18                 return {
    19                     firstName: "Walter",
    20                     lastName: "White",
    21                     alias: "Heisenberg"
    22                 }
    23             }
    24         });
    25 
    26         // 创建Profile实例,并挂载在一个元素上
    27         new Profile().$mount("#mount-point");
    28     </script>
    29 </body>
    30 
    31 </html>

      输出结果:"Walter White aka Heisenberg"

      2、第二种用法,将组件注册到Vue.component全局方法里面

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="example">
    12         <apple></apple>
    13     </div>
    14 
    15     <script>
    16         // 创建构造器
    17         var Profile = Vue.extend({
    18             template: `<p>{{firstName}} {{lastName}} aka {{alias}}</p>`,
    19             data: function () {
    20                 return {
    21                     firstName: "Walter",
    22                     lastName: "White",
    23                     alias: "Heisenberg"
    24                 }
    25             }
    26         });
    27 
    28         Vue.component('apple', Profile);
    29 
    30         var vm = new Vue({
    31             el: "#example",
    32             data: {
    33             }
    34         });
    35     </script>
    36 </body>
    37 
    38 </html>

      输出结果:同上。

      3、第三种用法,将组件注册为局部组件

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="example">
    12         <apple></apple>
    13     </div>
    14 
    15     <script>
    16         // 创建构造器
    17         var Profile = Vue.extend({
    18             template: `<p>{{firstName}} {{lastName}} aka {{alias}}</p>`,
    19             data: function () {
    20                 return {
    21                     firstName: "Walter",
    22                     lastName: "White",
    23                     alias: "Heisenberg"
    24                 }
    25             }
    26         });
    27 
    28         var vm = new Vue({
    29             el: "#example",
    30             data: {
    31             },
    32             components: {
    33                 apple: Profile
    34             }
    35         });
    36     </script>
    37 </body>
    38 
    39 </html>

      输出结果:同上。

    (2)Vue.nextTick([callback, context])

    参数:

    • {Function} [callback]
    • {Object} [context]

      在下次 DOM 更新循环结束之后执行延迟回调。在修改数据之后立即使用这个方法,获取更新后的 DOM。

    // 修改数据
    vm.msg = 'Hello'
    // DOM 还没有更新
    Vue.nextTick(function () {
      // DOM 更新了
    })
    
    // 作为一个 Promise 使用 (2.1.0 起新增,详见接下来的提示)
    Vue.nextTick()
      .then(function () {
        // DOM 更新了
      })

      输出结果:略。

    (3)Vue.set( target, propertyName/index, value )

    参数:

    • {Object | Array} target
    • {string | number} propertyName/index
    • {any} value

    返回值:设置的值。

      向响应式对象中添加一个属性,并确保这个新属性同样是响应式的,且触发视图更新。它必须用于向响应式对象上添加新属性,因为 Vue 无法探测普通的新增属性 (比如 this.myObject.newProperty = 'hi')

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         <p>{{arr}}</p>
    13         <p v-for="(item, index) in arr" :key="index">index: {{index}}, item: {{item}}</p>
    14     </div>
    15 
    16     <script>
    17         var app = new Vue({
    18             el: "#app",
    19             data: {
    20                 arr: [1, 2, 3],
    21                 msg: {
    22                     age: 18,
    23                 }
    24             },
    25         });
    26     </script>
    27 </body>
    28 
    29 </html>

      输出结果:

    (4)Vue.delete( target, propertyName/index )

    参数:

    • {Object | Array} target
    • {string | number} propertyName/index

      删除对象的属性。如果对象是响应式的,确保删除能触发更新视图。这个方法主要用于避开 Vue 不能检测到属性被删除的限制,但是你应该很少会使用它。

      举例如上述所示。

    (5)Vue.directive( id, [definition] )

    参数:

    • {string} id
    • {Function | Object} [definition]

      注册或获取全局指令。

    // 注册
    Vue.directive('my-directive', {
        bind: function () { },
        inserted: function () { },
        update: function () { },
        componentUpdated: function () { },
        unbind: function () { }
    })
    
    // 注册 (指令函数)
    Vue.directive('my-directive', function () {
        // 这里将会被 `bind` 和 `update` 调用
    })

      输出结果:略。

    (6)Vue.filter( id, [definition] )

    参数:

    • {string} id
    • {Function} [definition]

      注册或获取全局过滤器。

    // 注册
    Vue.filter('my-filter', function (value) {
      // 返回处理后的值
    })
    
    // getter,返回已注册的过滤器
    var myFilter = Vue.filter('my-filter')

      举例:

    <!DOCTYPE html>
    <html>
    
    <head>
        <meta charset="utf-8">
        <title>My test page</title>
        <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    </head>
    
    <body>
        <div id="app">
            <p>{{arr}}</p>
            <p v-for="(item, index) in arr" :key="index">index: {{index}}, item: {{item}}</p>
        </div>
    
        <script>
            // 注册
            Vue.filter('my-filter', function (value) {
                // 返回处理后的值
                if (!value) {
                    return "";
                }
                value = value.toString();
                return value.charAt(0).toUpperCase() + value.slice(1);
            })
    
            // getter,返回已注册的过滤器
            var myFilter = Vue.filter('my-filter')
    
            var app = new Vue({
                el: "#app",
                data: {
                    arr: [1, 2, 3],
                    msg: {
                        name: "zhaoyichun",
                    }
                },
            });
        </script>
    </body>
    
    </html>

      输出结果:

    (7)Vue.component( id, [definition] )

    参数:

    • {string} id
    • {Function | Object} [definition]

      注册或获取全局组件。注册还会自动使用给定的id设置组件的名称

    // 注册组件,传入一个扩展过的构造器
    Vue.component('my-component', Vue.extend({ /* ... */ }))
    
    // 注册组件,传入一个选项对象 (自动调用 Vue.extend)
    Vue.component('my-component', { /* ... */ })
    
    // 获取注册的组件 (始终返回构造器)
    var MyComponen

      举例:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         <p>{{arr}}</p>
    13         <p v-for="(item, index) in arr" :key="index">index: {{index}}, item: {{item}}</p>
    14         <my-component></my-component>
    15     </div>
    16 
    17     <script>
    18         // 注册组件,传入一个选项对象 (自动调用 Vue.extend)
    19         Vue.component('my-component', {
    20             template: `
    21                 <p>I am a component.</p>
    22             `,
    23         })
    24 
    25         // 获取注册的组件 (始终返回构造器)
    26         var MyComponent = Vue.component('my-component')
    27 
    28         var app = new Vue({
    29             el: "#app",
    30             data: {
    31                 arr: [1, 2, 3],
    32                 msg: {
    33                     name: "zhaoyichun",
    34                 }
    35             },
    36         });
    37     </script>
    38 </body>
    39 
    40 </html>

      输出结果:

    (8)Vue.use( plugin )

    参数:

    • {Object | Function} plugin

      安装 Vue.js 插件。如果插件是一个对象,必须提供 install 方法。如果插件是一个函数,它会被作为 install 方法。install 方法调用时,会将 Vue 作为参数传入。

      该方法需要在调用 new Vue() 之前被调用。
      当 install 方法被同一个插件多次调用,插件将只会被安装一次。

    (9)Vue.mixin( mixin )

    参数:

    • {Object} mixin

      全局注册一个混入,影响注册之后所有创建的每个 Vue 实例。插件作者可以使用混入,向组件注入自定义的行为。不推荐在应用代码中使用。

    (10)Vue.compile( template )

    参数:

    • {string} template

      在 render 函数中编译模板字符串。只在独立构建时有效

    var res = Vue.compile('<div><span>{{ msg }}</span></div>')
    
    new Vue({
      data: {
        msg: 'hello'
      },
      render: res.render,
      staticRenderFns: res.staticRenderFns
    })

      举例:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         <p>Haha</p>
    13     </div>
    14 
    15     <script>
    16         var res = Vue.compile('<div><span>{{ msg }}</span></div>')
    17 
    18         var app = new Vue({
    19             el: "#app",
    20             data: {
    21                 msg: 'hello'
    22             },
    23             render: res.render,
    24             staticRenderFns: res.staticRenderFns
    25         })
    26     </script>
    27 </body>
    28 
    29 </html>

      输出结果:

    (11)Vue.observable( object )

      2.6.0 新增

    参数:

    • {Object} object

      让一个对象可响应。Vue 内部会用它来处理 data 函数返回的对象。

      返回的对象可以直接用于渲染函数和计算属性内,并且会在发生改变时触发相应的更新。也可以作为最小化的跨组件状态存储器,用于简单的场景:

    const state = Vue.observable({ count: 0 })
    
    const Demo = {
      render(h) {
        return h('button', {
          on: { click: () => { state.count++ }}
        }, `count is: ${state.count}`)
      }

       在 Vue 2.x 中,被传入的对象会直接被 Vue.observable 改变,所以如这里展示的,它和被返回的对象是同一个对象。在 Vue 3.x 中,则会返回一个可响应的代理,而对源对象直接进行修改仍然是不可响应的。因此,为了向前兼容,我们推荐始终操作使用 Vue.observable 返回的对象,而不是传入源对象。

      举例(创建了一个反映对象的 "状态" 。之后,更新对象将反映在模板中):

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         <button @click="increaseCounter">Test Vue.observable()</button>
    13         <p>{{ state.count }}</p>
    14     </div>
    15 
    16     <script>
    17         let state = Vue.observable({ count: 0 })
    18 
    19         var app = new Vue({
    20             el: "#app",
    21             data: {
    22                 msg: 'hello',
    23             },
    24             computed: {
    25                 // dd() {
    26                 //     return state;
    27                 // }
    28             },
    29             methods: {
    30                 increaseCounter() {
    31                     state.count++;
    32                 }
    33             }
    34         })
    35     </script>
    36 </body>
    37 
    38 </html>

      输出结果:

    (12)Vue.version

      细节:提供字符串形式的 Vue 安装版本号。这对社区的插件和组件来说非常有用,你可以根据不同的版本号采取不同的策略。

    var version = Number(Vue.version.split('.')[0])
    
    if (version === 2) {
      // Vue v2.x.x
    } else if (version === 1) {
      // Vue v1.x.x
    } else {
      // Unsupported versions of Vue
    }

      输出结果:略。

    15.3 选项 / 数据

    (1)data

    • 类型:Object | Function
    • 限制:组件的定义只接受 function。

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

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12     </div>
    13 
    14     <script>
    15         var data_1 = { a: 1 };
    16 
    17         // 直接创建一个实例
    18         var vm = new Vue({
    19             el: "#app",
    20             data: data_1
    21         });
    22 
    23         // Vue.extend() 中 data 必须是函数
    24         var Component = Vue.extend({
    25             data: function () {
    26                 return { a: 1 }
    27             }
    28         })
    29 
    30     </script>
    31 </body>
    32 
    33 </html>

      输出结果:

    (2)props

      略。

    (3)propsData

    • 类型:{ [key: string]: any }
    • 限制:只用于 new 创建的实例中。

      创建实例时传递 props。主要作用是方便测试。

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         msg: {{ msg }},  a: {{ a }}
    13     </div>
    14 
    15     <script>
    16         // Vue.extend() 中 data 必须是函数
    17         var Comp = Vue.extend({
    18             props: ['msg'],
    19             template: `<div>{{ msg }}</div>`,
    20             data: function () {
    21                 return { a: 1 }
    22             }
    23         })
    24 
    25         var vm = new Comp({
    26             el: "#app",
    27             propsData: {
    28                 msg: "Hello",
    29             }            
    30         });
    31     </script>
    32 </body>
    33 
    34 </html>

      输出结果:

    (4)computed

      举例:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12     </div>
    13 
    14     <script>
    15         var vm = new Vue({
    16             el: "#app",
    17             data: { a: 1 },
    18             computed: {
    19                 // 仅读取
    20                 aDouble: function () {
    21                     return this.a * 2;
    22                 },
    23                 // 读取和设置
    24                 aPlus: {
    25                     get: function () {
    26                         return this.a + 1;
    27                     },
    28                     set: function (v) {
    29                         this.a = v - 1;
    30                     }
    31                 }
    32             }
    33         });
    34     </script>
    35 </body>
    36 
    37 </html>

      输出结果:

    (5)methods

      略。

    (6)watch

      略。

    15.4 选项 / DOM

    (1)el

    • 类型:string | Element
    • 限制:只在由 new 创建的实例中遵守。

      提供一个在页面上已存在的 DOM 元素作为 Vue 实例的挂载目标。可以是 CSS 选择器,也可以是一个 HTMLElement 实例。

      在实例挂载之后,元素可以用 vm.$el 访问。

    (2)template

      略。

    (3)render

      Vue 选项中的 render 函数若存在,则 Vue 构造函数不会从 template 选项或通过 el选项指定的挂载元素中提取出的 HTML 模板编译渲染函数。

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12     </div>
    13 
    14     <script>
    15         var vm = new Vue({
    16             el: "#app",
    17             data: { msg: "Hello, world!" },
    18             computed: {
    19             },
    20             render: function (createElement) {
    21                 return createElement('div', {
    22                     attr: {
    23                         id: 'app'
    24                     },
    25                 }, this.msg);
    26             }
    27         });
    28     </script>
    29 </body>
    30 
    31 </html>

      等价于(没有render属性时):

    <div id="app">
        {{ msg }}
    </div>

      输出结果:

    (4)renderError

    15.4 选项 / 生命周期钩子

    1. beforeCreate
    2. created
    3. beforeMount
    4. mounted
    5. beforeUpdate
    6. updated
    7. activated
    8. deactivated
    9. beforeDestroy
    10. destroyed
    11. errorCaptured

    15.5 选项 / 资源

    (1)directives

    (2)filters

    (3)components

    15.6 选项 / 组合

    (1)parent

      指定已创建的实例之父实例,在两者之间建立父子关系。子实例可以用 this.$parent 访问父实例,子实例被推入父实例的 $children 数组中。

      节制地使用 $parent 和 $children - 它们的主要目的是作为访问组件的应急方法。更推荐用 props 和 events 实现父子组件通信。

    (2)mixins

    (3)extends

    (4)provide / inject

    15.7 选项 / 其它

    (1)name

    • 类型:string
    • 限制:只有作为组件选项时起作用。

      允许组件模板递归地调用自身。注意,组件在全局用 Vue.component() 注册时,全局 ID 自动作为组件的 name。

    (2)delimiters

    (3)functional

    (4)model

    (5)inheritAttrs

    (6)comments

      2.4.0 新增

    • 类型:boolean
    • 默认值:false
    • 限制:这个选项只在完整构建版本中的浏览器内编译时可用。

      当设为 true 时,将会保留且渲染模板中的 HTML 注释。默认行为是舍弃它们。

    15.8 实例属性

    15.9 实例方法 / 数据

    (1)vm.$watch( expOrFn, callback, [options] )

      略。

    (2)vm.$set( target, propertyName/index, value )

      举例:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="app">
    12         <my-comp></my-comp> <!-- 这是一个注释测试 -->
    13     </div>
    14 
    15     <script>
    16         Vue.component("my-comp", {
    17             props: ["aa"],
    18             template: "<p>Hello paragraph.</p>",
    19         });
    20 
    21         var vm = new Vue({
    22             el: "#app",
    23             data: { 
    24                 msg: "Hello, world!",
    25                 obj: {
    26                     age: 15,
    27                 }
    28             },
    29             computed: {
    30             },   
    31         });
    32     </script>
    33 </body>
    34 
    35 </html>

      输出结果:

    (3)vm.$delete( target, propertyName/index )

       参考上述用例。

    15.10 实例方法 / 事件

    (1)vm.$on( event, callback )

      举例:

    (2)vm.$once( event, callback )

      监听一个自定义事件,但是只触发一次,在第一次触发之后移除监听器。

    (3)vm.$off( [event, callback] )

      举例:

    (4)vm.$emit( eventName, […args] )

    15.11 实例方法 / 生命周期

    (1)vm.$mount( [elementOrSelector] )

    (2)vm.$forceUpdate()

    (3)vm.$nextTick( [callback] )

    (4)vm.$destroy()

    15.12 指令

    (1)v-text

    (2)v-html

    (3)v-show

    (4)v-if

    (5)v-else

    (6)v-else-if

    (7)v-for

    (8)v-on

    (9)v-bind

    (10)v-model

    (11)v-slot

    (12)v-pre

      举例:

     1 <!DOCTYPE html>
     2 <html>
     3 
     4 <head>
     5     <meta charset="utf-8">
     6     <title>My test page</title>
     7     <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
     8 </head>
     9 
    10 <body>
    11     <div id="example">
    12         <p>{{ msg }}</p>
    13         <p v-pre>{{ msg }}</p>
    14     </div>
    15 
    16     <script>
    17         var vm = new Vue({
    18             el: "#example",
    19             data: {
    20                 msg: "Hello, world"
    21             },
    22             components: {
    23 
    24             }
    25         });
    26     </script>
    27 </body>
    28 
    29 </html>

      输出结果:

    (13)v-cloak

    (14)v-once

  • 相关阅读:
    expdp和impdp用法详解
    Shiro-JWT SpringBoot前后端分离权限认证的一种思路
    Maven Helper 插件-解决依赖冲突
    maven打包之resource配置
    sparkstreaming direct方式读取kafka(0.10版本)数据, 并手动维护offset
    java向kafka发送消息
    idea maven整合log4j
    java设计模式: 工厂方法模式
    异地购房使用武汉公几斤商dai转公几斤dai款
    java设计模式: 单例设计模式
  • 原文地址:https://www.cnblogs.com/zyjhandsome/p/11200845.html
Copyright © 2011-2022 走看看