Vue2.0 -- 组件局部注册

目录

组件定义

注册

使用组件

组件的命名


再做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://xiahunao.cn/news/2660478.html

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

相关文章

2024第四届中国数字化人才国际峰会 热点话题

会议背景 在科技日新月异、各行业数字化转型日益受到重视的背景下&#xff0c;加快培育造就数字人才&#xff0c;打造成熟先进的数字人才生态体系是当下的企业发展重点。同时&#xff0c;数字化科技是实现企业可持续发展的重要手段&#xff0c;ESG也是企业长期发展的必要战略&…

【js控制页面的模糊程度】【lenis禁止页面滚动】

文章目录 前言一、效果图二、使用步骤1.下载studio-freight/lenis2.使用studio-freight/lenis 三、下载 gsap在编写页面动画1. 下载gsap2.引入gsap3.调用gsap的方法&#xff0c;让页面模糊 总结 前言 在项目中&#xff0c;我们经常会遇到弹窗功能&#xff0c;当弹框弹出时&…

牧云主机管理助手 —— 一款免费且便捷的服务器运维工具

牧云主机管理助手 —— 一款免费且便捷的服务器运维工具 在日常运维工作中&#xff0c;服务器管理是一项至关重要的任务。对于许多企业和个人而言&#xff0c;这往往意味着需要投入大量的时间和精力。然而在一些运维工具的帮助下&#xff0c;服务器运维工作也可以变得高效快捷…

十、方法调用的底层实现

一、方法调用分析&#xff08;main方法是JVM指令执行的起点&#xff09; 我们写的代码&#xff0c;经过编译、经过类加载的各种阶段&#xff0c;进入了 JVM 的运行时数据区。但作为程序员真正关心是代码的执行&#xff0c;代码的执行其实本质上是方法的执行&#xff0c;站在 JV…

idea中切换JDK8、JDK11、JDK17

有时候&#xff0c;我们可能需要在不同的Java版本中去测试或者查看源码&#xff0c;idea可以让我们修改Java的版本。 前提&#xff1a;你必须下载安装好对应的Java版本&#xff0c;可参考文章【windows下切换JDK8、JDK11、JDK17】&#xff08;https://blog.csdn.net/xijinno1/a…

GoLang学习之路,对Elasticsearch的使用,一文足以(包括泛型使用思想)(一)

这几天没有更新&#xff0c;其主要的的原因是&#xff0c;在学习对Elasticsearch的使用。Elasticsearch是一个非常强大的数据库索引工具。是一个基于Lucene库的搜索引擎。它提供了一个分布式、支持多租户的全文搜索引擎&#xff0c;具有HTTP Web接口和无模式JSON文档。Elastics…

Java学习路线第四篇:框架项目

这篇则分享Java学习路线第四part&#xff1a;框架项目 恭喜你已经成功追到第四章节啦&#xff0c;要被自己的努力感动到了吧&#xff0c;而这节将承担起学完框架项目的使命&#xff0c;本使命为单向契约&#xff0c;你可选择YES或者选择YES。 CRM 动力节点java项目实战|Spri…

工业信息采集平台 软件界面介绍

关键字&#xff1a;蓝鹏测控典型界面,蓝鹏测控交互界面,蓝鹏测控图形界面,蓝鹏测控历史界面,蓝鹏测控自定义界面 软件测控平台对UI程序界面&#xff0c;实现形式没有要求&#xff0c;也就是说&#xff0c;客户可以根据自己的需要设计任何样式的交互界面。 &#xff08;1&…

【计算机视觉】角点检测(Harris、SIFT)

Harris 角点指的是窗口延任意方向移动&#xff0c;都有很大变化量的点。 用数学公式表示为&#xff1a; E(u,v)反映的移动后窗口的差异&#xff0c;w(x,y)为每个像素的点权值&#xff0c;I(xu,yv)是移动的像素值&#xff0c;I(x,y)是移动前的像素值。 将E(u,v)进行泰勒展开&am…

作为铭文跨链赛道龙头,SoBit 有何突出之处?

跨链桥赛道将是铭文市场长期的发展的刚需 在比特币网络中&#xff0c;Ordinals 铭文铸造的铭文总量已经超过了 5100 万枚&#xff0c;并累计费用收入超 5028 BTC。同时&#xff0c;仅 BRC-20 叙事方向的市值&#xff0c;就已经超过了 30 亿美元&#xff0c;并且随着铭文资产种类…

D3485国产芯片+5V工作电压, 内置失效保护电路采用SOP8封装

D3485是一款5V供电、半双工的RS-485收发器&#xff0c;芯片内部包含一路驱动器和路接收器。D3485使用限摆率驱动器&#xff0c;能显著减小EMI和由于不恰当的终端匹配电缆所引起的反射&#xff0c;并实现高达10Mbps的无差错数据传输。D3485内置失效保护电路&#xff0c;保证接收…

MIT线性代数笔记-第31讲-线性变换及对应矩阵

目录 31.线性变换及对应矩阵打赏 31.线性变换及对应矩阵 线性变换相当于是矩阵的抽象表示&#xff0c;每个线性变换都对应着一个矩阵 例&#xff1a; 考虑一个变换 T T T&#xff0c;使得平面上的一个向量投影为平面上的另一个向量&#xff0c;即 T : R 2 → R 2 T:R^2 \to R…

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理

经典目标检测YOLO系列(一)复现YOLOV1(2)反解边界框及后处理 在上个博客&#xff0c;我们提出了新的YOLOV1架构&#xff0c;这次我们解决前向推理过程中的两个问题。 经典目标检测YOLO系列(一)YOLOV1的复现(1)总体架构 1、边界框的计算 1.1 反解边界框公式的改变 1.1.1 原版…

踩坑RV1106板端部署rknn模型

文章目录 1、交叉编译2、板上跑通3、验证自己模型 1、交叉编译 官方给的一个流程: RKNN 模型推理测试为了避免踩坑在开头提出来 按照官方的流程可以跑通&#xff0c;他自己提供的yolov5s.rknn&#xff08;640*640&#xff09;的模型&#xff0c;但是跑自己的模型的时候加载就会…

【星海随笔】浅谈用户态和内核态

内核 操作系统的核心是内核(kernel)&#xff0c;它独立于普通的应用程序&#xff0c;可以访问受保护的内存空间&#xff0c;也有访问底层硬件设备的所有权限。 linux 内核空间在虚拟空间中是固定大小的&#xff0c;并且在物理空间中同样也是固定大小的。 一般情况下&#xff…

如何合理配置云服务器的CPU和内存?

​  提到云服务器性能&#xff0c;大抵有两个主要影响因素&#xff0c;CPU 核心数量和内存容量 &#xff0c;它们决定了云服务器的速度和可靠性。日常运用中&#xff0c;我们如何判断网站需要需要更多或更少?如何扩大或缩小它们以优化网站的性能? 一般来说&#xff0c;您拥…

黑白图如何转换成彩色图

将黑白图转换为伪彩色图是通过给黑白图中的灰度值映射到彩虹色等色谱上&#xff0c;从而呈现出彩色效果。以下是一些常见的黑白图伪彩转换方式&#xff1a; 热度图&#xff08;Heatmap&#xff09;&#xff1a; 将低灰度值映射为冷色&#xff0c;高灰度值映射为热色。通常使用…

鸿蒙4.0实战应用(ArkTS)-抽奖转盘

构建主界面 在这个章节中&#xff0c;我们将完成示例主界面的开发&#xff0c;效果如图所示&#xff1a; 功能要求&#xff1a; 通过画布组件Canvas&#xff0c;画出抽奖圆形转盘。通过显式动画启动抽奖功能。通过自定义弹窗弹出抽中的奖品。 在绘制抽奖圆形转盘前&#xff…

文献速递:人工智能医学影像分割---高效的MR引导CT网络训练,用于CT图像中前列腺分割

01 文献速递介绍 如今&#xff0c;根据国家癌症研究所的报告&#xff0c;美国约有9.9%的男性患有前列腺癌。1 此外&#xff0c;根据美国癌症协会的数据&#xff0c;预计2019年将有174,650个新病例被诊断出前列腺癌&#xff0c;与此同时大约有31,620名男性将死于前列腺癌。因此…

大数据与人工智能|信息技术产业架构、行业发展与前沿技术(第2节)

内容链接&#xff1a;信息技术产业架构、行业发展与前沿技术&#xff08;大数据与人工智能系列课程 第2节&#xff09; 声明&#xff1a;学习使用&#xff0c;侵权必删&#xff01; 主要内容&#xff1a;1. 从算盘到量子计算机&#xff0c;介绍了半导体行业的发展历程和技术原…