美文网首页
9-Vue深入了解组件-组件注册

9-Vue深入了解组件-组件注册

作者: 波克比 | 来源:发表于2019-07-02 16:57 被阅读0次

组件名大小写

定义组件名的方式有两种:

使用 kebab-case

Vue.component('my-component-name', { /* ... */ })

当使用 kebab-case (短横线分隔命名) 定义一个组件时,你也必须在引用这个自定义元素时使用 kebab-case,例如 <my-component-name>。

使用 PascalCase

Vue.component('MyComponentName', { /* ... */ })

当使用 PascalCase (首字母大写命名) 定义一个组件时,你在引用这个自定义元素时两种命名法都可以使用。也就是说 <my-component-name> 和 <MyComponentName> 都是可接受的。注意,尽管如此,直接在 DOM (即非字符串的模板) 中使用时只有 kebab-case 是有效的。

全局注册

全局组件[要注册一个全局组件,可以使用 Vue.component(tagName, options)]【注意点:组件在注册之后,便可以作为【自定义元素】在一个实例的模板中使用,确保在初始化根实例之前注册组件。】

Vue.component('my-component-name', {
  // ... 选项 ...
})

局部注册

局部组件[注意点:注册仅在其作用域中可用的组件]
在这些情况下,你可以通过一个普通的 JavaScript 对象来定义组件:

var ComponentA = { /* ... */ }
var ComponentB = { /* ... */ }
var ComponentC = { /* ... */ }

然后在 components 选项中定义你想要使用的组件:

new Vue({
  el: '#app',
  components: {
    'component-a': ComponentA,
    'component-b': ComponentB
  }
})

对于 components 对象中的每个属性来说,其属性名就是自定义元素的名字,其属性值就是这个组件的选项对象。
注意局部注册的组件在其子组件中不可用。例如,如果你希望 ComponentA 在 ComponentB 中可用,则你需要这样写:

var ComponentA = { /* ... */ }

var ComponentB = {
  components: {
    'component-a': ComponentA
  },
  // ...
}

或者如果你通过 Babel 和 webpack 使用 ES2015 模块,那么代码看起来更像:

import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  },
  // ...
}

关于全局组件和局部组件的具体实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <div id="app1">
        <h4>全局组件</h4>
        <my-global></my-global>
    </div>
    <p></p>
    <hr>
    <p></p>
    <div id="app2">
        <h4>局部组件</h4>
        <local-global></local-global>
    </div>

    <script src="js/vue.js"></script>
    <script>
        // 先注册全局组件
        Vue.component('my-global',{
            template: '<div>{{msg}}</div>',
            data () {
                return {
                    msg: 'A global component'
                }
            }
        });
        // 再初始化
        var app1 = new Vue({
            el: '#app1'
        });

        var child = {
            template: '<div>a local component</div>'
        };
        var app2 = new Vue({
            el: '#app2',
            data: {

            },
            components: {
                // 局部组件
                'local-global': child
            }
        });
    </script>
</body>
</html>

在模块系统中局部注册

创建一个 components 目录,并将每个组件放置在其各自的文件中。然后你需要在局部注册之前导入每个你想使用的组件。例如,在一个假设的 ComponentB.js 或 ComponentB.vue 文件中,现在 ComponentA 和 ComponentC 都可以在 ComponentB 的模板中使用了。

import ComponentA from './ComponentA'
import ComponentC from './ComponentC'

export default {
  components: {
    ComponentA,
    ComponentC
  },
  // ...
}

相关文章

  • 9-Vue深入了解组件-组件注册

    组件名大小写 定义组件名的方式有两种: 使用 kebab-case 当使用 kebab-case (短横线分隔命名...

  • Vue教程进阶篇

    深入了解组件 组件注册 全局注册 局部注册 如果所有的组件都用全局注册意味着即使你已经不再使用一个组件,它仍然会被...

  • Vue组件深入

    vue组件深入 组件注册 全局注册 局部注册 prop prop的大小写 camelCase vs Kebab-c...

  • Ant Design 组件 —— Modal

    用法 1. 引入 Modal 组件 2. 定义组件属性 3. 渲染组件 深入了解 Ant Design - Mod...

  • vue组件

    关于vue组件的总结 注册组件 vue中组件的注册分为两种: 全局注册 局部注册 全局注册 全局注册的组件在任何v...

  • Spring相关技术自检表

    IOC组件注册-@Configuration&@Bean给容器中注册组件组件注册-@ComponentScan-自...

  • vue ref 获取子组件属性值

    父引入、注册组件并调用组件 引入、注册 调用组件 调用子组件的函数 调用子组件的属性

  • 注册组件的语法糖写法

    1.全局注册组件语法糖 全局组件不用语法糖的构建过程:生成组件构造器 注册组件 使用组件 全局注册组件的语法糖,省...

  • Vue组件化开发

    一:组件注册1.1全局组件注册 1.2组件的用法 1.3组件注册的注意事项 1.4组件的命名方式 2.局部组件 2...

  • 父子组件通信:关于 props down,enents up

    一. 父组件中注册子组件 1. 全局注册 2. 局部注册 通过import引入子组件 命名, 在声明和注册组件时建...

网友评论

      本文标题:9-Vue深入了解组件-组件注册

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