Vue2 组件注册

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <script type="text/javascript" src="Vue-v2.5.22.js"></script>
    <title>Title</title>
</head>
<body>
<div id="app">
    <my-component></my-component>
    <my-parent></my-parent>

    <my-component2></my-component2>
    <my-parent2></my-parent2>
</div>

<script type="text/javascript">
    // 全局注册
    let MyComponent = Vue.extend({
        template: '<p>This is a component</p>'
    });

    Vue.component('my-component', MyComponent);

    // 局部注册
    let Child = Vue.extend({
        template: '<p>This is a child component</p>'
    });

    let Parent = Vue.extend({
        template: '<div>\
        <p>This is a parent component</p>\
        <my-child></my-child>\
        </div>',
        components: { //注意加 s
            'my-child': Child
        }
    });

    Vue.component('my-parent', Parent);

    // 简化方式
    // 全局注册
    Vue.component('my-component2',
        {
            template: '<p>This is a component</p>'
        });
    // 局部注册
    Vue.component('my-parent2',
        {
            template: '<div>\
        <p>This is a parent component</p>\
        <my-child2></my-child2>\
        </div>',
            components: { //注意加 s
                'my-child2': {
                    template: '<p>This is a child component</p>'
                }
            }
        });

    let vm = new Vue({
        el: '#app',
    })
</script>
</body>
</html>

 

<think>我们根据提供的引用内容,总结Vue2注册自定义组件的几种方法: 1. 全局注册:在入口文件(如main.js)中使用`Vue.component()`方法注册注册后可在任意组件中使用。 2. 局部注册:在需要使用组件的父组件中,通过`components`选项进行注册,这样注册组件只在当前组件作用域内可用。 3. 使用Vue插件方式注册(如引用[2]中全局注册ant-design-vue):通过`Vue.use()`注册一个插件,该插件内部可以注册全局组件(通常用于第三方组件库)。 4. 使用`Vue.prototype`注册全局方法(但这不是注册组件,而是注册方法,如引用[3]所示,所以这里不适用)。 根据用户问题,我们关注的是注册自定义组件的方法,因此主要介绍全局注册和局部注册两种。 此外,引用[5]提到了自定义指令和父子组件通信,与注册组件本身关系不大,故不采用。 下面给出具体解释和示例: </think>在 Vue 2 中,注册自定义组件主要有全局注册和局部注册两种方式,具体操作如下: ### 一、全局注册组件 在入口文件(如 `main.js`)中使用 `Vue.component()` 方法,注册后可在**所有组件**中直接使用: ```javascript import Vue from 'vue' import MyComponent from './components/MyComponent.vue' // 注册全局组件组件名, 组件对象) Vue.component('MyComponent', MyComponent) new Vue({ render: h => h(App) }).$mount('#app') ``` **特点**: - 组件名可自定义字符串(如 `'MyComponent'`)或直接使用导入对象的 `name` 属性(需确保组件已定义 `name`) - 注册后无需单独导入即可在任意模板中使用 `<my-component>` [^1][^2] --- ### 二、局部注册组件(推荐) 在父组件的 `components` 选项中注册,仅**当前组件及其子组件**可用: ```javascript // ParentComponent.vue import ComponentA from './ComponentA.vue' import ComponentB from './ComponentB.vue' export default { components: { // 局部注册 'component-a': ComponentA, ComponentB // ES6简写(自动以变量名作为组件名) } } ``` **特点**: - 避免全局命名污染,优化性能(未使用的组件不会被加载) - 模板中可直接使用 `<component-a>` 或 `<component-b>`[^4] --- ### 三、插件式注册(适用于组件库) 通过 `Vue.use()` 注册包含组件的插件(常用于第三方库如 Ant Design): ```javascript // main.js import Antd from 'ant-design-vue' import 'ant-design-vue/dist/antd.css' Vue.use(Antd) // 插件内部自动全局注册组件 ``` **原理**:插件需实现 `install` 方法,其中调用 `Vue.component()`[^2] --- ### 最佳实践建议 1. **通用组件**(如按钮、弹窗)使用全局注册,减少重复导入 2. **业务组件**(如页面区块)使用局部注册,保持模块化 3. **避免**通过 `Vue.prototype` 注册组件(该方法适用于全局方法,而非组件)[^3] > 示例:全局注册自定义按钮组件 > ```javascript > // main.js > import MyButton from "./components/MyButton.vue" > Vue.component(MyButton.name, MyButton) // 使用组件自身的name属性[^2] > ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值