Vue2.0 -- 组件局部注册

news2025/1/17 5:51:57

目录

组件定义

注册

使用组件

组件的命名


再做vue之前, 需要先引入vue.js文件

    <script src="../js/vue.js"></script>

有很多官方或者非官方的cdn可以使用, 可自行前往 搜索下载

组件定义

        首先, 使用Vue.extend() 来定义一个组件 (注意这个步骤是在script标签中完成的)

    const testComponent = Vue.extend({
        
    })

       然后进行初始化操作, 初始化的时候, 在Vue.extend()中填入一个对象参数, 这个参数的格式和new Vue的操作大部分相似.

        第一个参数  : template, 也就是模板的意思, 它规定了组件以什么样的方式出现:

    const testComponent = Vue.extend({
        template : '<div>你好呀</div>'
    })

        第二个参数 : data, 如果组件中存在动态的数据, 那么就需要使用data来写入数据, 例如:

    const testComponent = Vue.extend({
        template : `<div>你好呀</div>
        <p>我是{{name}}</p>`
    })

       这个时候你就会发现, 在运行的时候这样定义template是错误的

        在使用之前就需要对这个name进行赋值, 也就是使用类似于new Vue的时候的data字段:

        vue语法规定, 组件下, 只能有一个根元素, 但是这个根元素可以包含其他元素, 如果template下面有多个元素的时候, 就需要使用div将所有元素全部包裹, 满足只有一个根元素的条件.       

        注意下面代码中的template下级标签一定是一个div或者其他标签

    const testComponent = Vue.extend({
        template : 
        `<div>
            <div>你好呀</div>
            <p>我是{{name}}</p>
         </div>`,
        data () {
            return {
                name : '张三'
            }
        }
    })

        注意上面代码中template 中把div圈起来的符号是 ``, 这个符号是位于英文键盘的左上角,Esc的下面一个按键, 同时除了这种直接在组件中声明template的格式, 还可以通过引用的形式来创建:

    const testComponent = Vue.extend({
        template : '#testTemplate',
        data () {
            return {
                name : '张三'
            }
        }
    })

        不过需要注意的是, 这里的data是以函数的形式出现的, 为什么?

        我们注意到, Vue的定义中, vue的组件是相互独立的存在, 两个不同的文件引用了同一个组件, 如果组件之前返回的数据是以data : {}的形式返回, 那么就意味着这个data必然有一个引用的对象, 也就是说, 这一个文件对这个组件的data引用里面的参数进行修改之后, 另外一个文件也会接收到这个修改, 就会影响组件的独立性, 所以这里使用方法的形式, 方数据直接通过方法返回给使用者, 那么修改的只是返回的值, 而不会影响其他文件.

        那么组件中是否能存在方法呢? 当然可以, 并且这个方法的使用和new Vue中的methods一样:


<body>
    <div id="app">
        <testcomponent></testcomponent>
    </div>
    <template id="test">
        <div>
            <div>你好呀</div>
            <p>我是 {{name}}</p>
            <p>你是谁呀 <input type="button" value="我是你的好朋友" @click="doInput"></p>
        </div>
    </template>
</body>
<script>

    const testcomponent = Vue.extend({
        template : '#test',
        data () {
            return {
                name : '张三'
            }
        },methods  : {
            doInput() {
                alert('收到!!')
            }
        }
    });
    var vue = new Vue({
        el : '#app',
        data: {

        }, methods : {
            
        }
    });

</script>

 

         在组件定义中加入methods对象, 对象的类型为方法, 每个方法之间使用逗号 ',' 隔开, 方法名和事件的名称对应上, 如上图代码.

注册

        注册就好比电话卡, 你拿到了一张电话卡, 如果你用一个没有停机的号码打这个电话卡, 那么就会显示此号码为空, 因为这和号码还没被运营商注册到网上

        你拿到的这个电话卡就相当于这里的组件, 把电话卡激活就相当于 对组件进行注册, 然后你得使用这张电话卡呀, 怎么使用? 当然是将其插入到手机中使用, 这里将电话卡插入手机就类似于将组件引用至文件中!!

        首先注册(局部注册), 你需要将其添加到vue的实例中, vue实例中有一个components字段, 这个字段用来存放一个或者多个组件, 每个组件之间使用英文逗号间隔, 如下:

<body>
    <div id="app">
        
    </div>
    <template id="test">
        <div>
            <div>你好呀</div>
            <p>我是 {{name}}</p>
            <p>你是谁呀 <input type="button" value="我是你的好朋友" @click="doInput"></p>
        </div>
    </template>
</body>
<script>

    const testcomponent = Vue.extend({
        template : '#test',
        data () {
            return {
                name : '张三'
            }
        },methods  : {
            doInput() {
                alert('收到!!')
            }
        }
    });
    var vue = new Vue({
        el : '#app',
        data: {

        }, methods : {
            
        },components : {
            testcomponent // 相当于testcomponent : testcomponent 
            // 或者你可以写为:
            // testc : testcomponent
            // 那么使用的时候就是使用testc这个名字
        }
    });

</script>

        对于组件的存放格式, 为key : value的形式, key为使用的时候的名字, value为你组件的名字, 就比如你使用邮箱的时候, 你可以给你的邮箱1111@qq.com 起一个签名niceff@qq.com , 叫做, 你的本质上还是这个1111@qq,com, 但是你使用给别人看的时候是niceff@qq.com.

        key为组件将要被使用之前我给它取的别名, value为组件定义的时候的名字.

        这个key的命名颇为有趣, 我们讨论在文章末尾讨论一下.

使用组件

        使用组件, 直接使用上文提到的key形成的标签来使用组件:

<body>
    <div id="app">
        <testcomponent></testcomponent>
    </div>
    <template id="test">
        <div>
            <div>你好呀</div>
            <p>我是 {{name}}</p>
            <p>你是谁呀 <input type="button" value="我是你的好朋友" @click="doInput"></p>
        </div>
    </template>
</body>
<script>

    const testcomponent = Vue.extend({
        template : '#test',
        data () {
            return {
                name : '张三'
            }
        },methods  : {
            doInput() {
                alert('收到!!')
            }
        }
    });
    var vue = new Vue({
        el : '#app',
        data: {

        }, methods : {
            
        },components : {
            testcomponent
        }
    });

</script>

        在 id ='app'的div标签中, 直接使用组件别名来自定义一个标签: "<key></key>"来使用.

组件的命名

        不少初学者在学习vue的时候都会遇到的一个头疼的问题, 因为不同的学生有不同的命名规范, 命名规范各不相同, 所以有些使用小驼峰命名的小伙伴可就惨了

        组件的命名有几个注意点:

  1. 第一种写法为, 首字母小写
  2. 第二种写法为首字母大写

        但是如果你的命名里面不止使用一个单词, 那么就需要注意:

  1. 如果key的命名中包含 ' - ' 横杠, 那么就需要将整个key加上引号, 例如
    'my-key' : testcomponent
  2. 如果使用驼峰的写法, 那么就需要 Vue的脚手架支持

        其次:

  1. 组件需要回避html中已有的标签, 例如h标签, div标签
  2. 可以使用name配置项指定组件在开发工具中呈现的名字(仅限开发工具), 也就是在组件定义的时候, 加上name 属性, 他是一个键值对的形式出现的字段.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1340435.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

mac 生成 本地.ssh

输入下面命令行 ssh-keygen 默认回车得到下面的 Generating public/private rsa key pair. Enter file in which to save the key (/Users/{用户名}/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has be…

【 FPGA 封装设计资源 】 Xilinx vs Altera

XILINX PACKAGE 一般在doc nav搜索&#xff0c;同样也可以在官网&#xff1b;检索关键字“*pkg-pinout.” 比如vu9p: ug575-ultrascale-pkg-pinout.pdf 原理库文件 Package Files Portal 举例&#xff1a; 先选封装&#xff1b; 再选器件 二维交叉检索后&#xff0c;在右击…

【力扣题解】P404-左叶子之和-Java题解

&#x1f468;‍&#x1f4bb;博客主页&#xff1a;花无缺 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! 本文由 花无缺 原创 收录于专栏 【力扣题解】 文章目录 【力扣题解】P404-左叶子之和-Java题解&#x1f30f;题目描述&#x1f4a1;题解&#x1f30f;总结…

配置inotify+rsync实时同步

Linux内核从2.6.13版本开始提供了inotify通知接口&#xff0c;用来监控文件系统的各种变化情况&#xff0c;如 文件存取&#xff0c;删除、移动&#xff0c;修改等&#xff0c;利用这一机制&#xff0c;可以非常方便地实现文件异动告警、增量备份&#xff0c; 并针对目录或文件…

main函数的参数ac和av

概要&#xff1a; main函数有两个参数&#xff0c;ac和av ac表示参数的个数&#xff0c;程序名包括在内。也就是说程序无参数运行时&#xff0c;ac的值为1 av是一个字符串数组&#xff0c;这个数组中的每个元素表示一个参数&#xff0c;程序名包括在内。也就是说&#xff0c…

Zulip:开源团队协作工具,高效沟通与远程办公 | 开源日报 No.126

zulip/zulip Stars: 18.9k License: Apache-2.0 Zulip 是一个开源的团队协作工具&#xff0c;拥有独特的基于主题的线程功能&#xff0c;结合了电子邮件和聊天的优点&#xff0c;使远程工作更加高效和愉快。它是唯一设计用于实时和异步对话的现代团队聊天应用程序。 其核心优势…

创建加密分区或者文件

文章目录 [GParted 中已清除的分区与未格式化的分区](https://superuser.com/questions/706624/cleared-vs-unformatted-partition-in-gparted)创建加密分区解密创建的加密分区以便挂载格式化设备未具体的格式&#xff08;这里为ext4格式&#xff09;创建挂载点目录挂载加密的文…

win32 WM_MENUSELECT消息学习

之前写了一些win32的程序&#xff0c;处理菜单单击都是处理WM_COMMAND消息&#xff0c;通过 LOWORD(wParam) 获取菜单ID&#xff0c;判断单击的是哪个菜单项&#xff1b; 还有一些其他菜单消息&#xff1b; 当在菜单项中移动光标或鼠标&#xff0c;程序会收到许多WM_MENUSELEC…

来聊聊程序员的职业发展路线

作为程序员&#xff0c;在开发岗位上做了几年&#xff0c;特别是到了30岁&#xff0c;这个而立之年&#xff0c;我们会来到一个重要的人生岔路口。就是管理和技术两个选择&#xff0c;一边专业路线&#xff0c;一边是管理路线。 在互联网的头部企业&#xff0c;对管理和技术是…

(12)Linux 常见的三种进程状态

&#x1f4ad; 前言&#xff1a;本章我们专门讲解进程的状态。我们先学习具体的 Linux 系统状态&#xff0c;再去介绍 OS 学科面对的概念如何理解 —— 运行态、终止态、阻塞态以及挂起态。 进程状态&#xff08;Process Status&#xff09; 什么是进程状态&#xff1f; 进程…

打地鼠游戏来了

主要利用js鼠标点击事件和window.setInterval&#xff08;&#xff09;回调函数来进行实现的. 源码获取方式&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1eW9qvX3zFH9qlH82-I4yOA 提取码&#xff1a;1233

1.2.3 TCP/IP参考模型

一、OSI参考模型与TCP/IP参考模型 1、应用层&#xff1a;将表示层和会话层都纳入其中&#xff0c;形成一个比较大的层次&#xff0c;包含所有的高层协议 2、传输层&#xff1a;实现端到端的&#xff0c;进程与进程之间的通信。 3、网际层&#xff1a;TCP/IOP模型中最关键的部…

Arduino平台软硬件原理及使用——发光二极管(LED灯)的使用

文章目录 一、发光二极管的发光原理 二、发光二极管正负极的辨别 三、发光二极管在Arduino中的使用 一、发光二极管的发光原理 通过上述两幅图像对发光二极管的结构及发光原理进行理解&#xff1b; 从物理学的角度而言&#xff0c;当电流通过晶片时&#xff08;N区的电子向P区移…

腾讯云轻量应用服务器和云服务器有什么区别?买哪个好

腾讯云轻量服务器和云服务器有什么区别&#xff1f;为什么轻量应用服务器价格便宜&#xff1f;是因为轻量服务器CPU内存性能比云服务器CVM性能差吗&#xff1f;轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境&#xff0c;云服务器CV…

【node-express】实现省县市/区三级联动接口

省县市/区三级联动接口 介绍接口步骤代码部分 介绍 源码地址&#xff1a;https://github.com/thinkasany/nestjs-course-code/tree/master/demo/address 使用 navicat 导入sql文件&#xff0c;新增表&#xff0c;然后只需要一个接口 localhost:3001/region?parentId1, 不断的…

uni-app新建页面

新建页面 一、右键点击 pages 文件夹&#xff0c;点击新建页面。 二、输入页面名称、选择创建 vue 文件、勾选创建同名目录、选择默认模板、勾选在 pages.json 中注册、点击创建即可。 原创作者&#xff1a;吴小糖 创作时间&#xff1a;2023.12.28

数据结构与算法(C语言版)P10——图

1、图的基本概念和术语 前面学过&#xff1a; 线性是一对一树形是一对多 而今天要学习的图形结构是多对多。 图的定义&#xff1a; G(V,E) V&#xff1a;顶点(数据元素)的__有穷非空__集合。E&#xff1a;边的有穷集合。 __有向图&#xff1a;__每条边都是有方向的 __无…

每周一算法:区间覆盖

问题描述 给定 N N N个闭区间 [ a i , b i ] [a_i,b_i] [ai​,bi​]&#xff0c;以及一个线段区间 [ s , t ] [s,t] [s,t]&#xff0c;请你选择尽量少的区间&#xff0c;将指定线段区间完全覆盖。 输出最少区间数&#xff0c;如果无法完全覆盖则输出 − 1 -1 −1。 输入格式…

程序员如何高效学习技术?

我们相信努力学习一定会有收获&#xff0c;但是方法不当&#xff0c;既让人身心疲惫&#xff0c;也没有切实的回报。 不少朋友每天都阅读技术文章&#xff0c;但是第二天就忘干净了。工作中领导和同事都认可你的沟通和技术能力&#xff0c;但是跳槽面试却屡屡碰壁。面试官问技术…

javaWebssh民宿管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh民宿管理系统是一套完善的web设计系统&#xff08;系统采用ssh框架进行设计开发&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…