四种组件定义方式都存在以下共性(血泪史)
规则:
1.组件只能有一个根标签
2.记住两个词全局和局部
3.组件名称命名中‘-小写字母'相当于大写英文字母(hello-com 相当于 helloCom)
而对于在HTML中自定义组件的时候有4种写法,不过也只是殊途同归,都是用template属性对应的只有一个根标签的HTML代码。
1.全局组件
定义方式示例:
Vue.component("hello-component",{ props:["message"], template :"<div ><h1>组件定义之全局组件</h1><h4>{{message}}</h4></div>" });
使用
<hello-component message=" global component"></hello-component>
属性介绍:
Vue.componen()是vue.js内部封装方法
"hello-component" 是使用时候的组件名称
props组件内的属性。供给组件内部传值
template组件内部DOM元素组成
品鉴
全局组件定义方式,是直接给全局对象Vue注册了一个组件。在本页内已挂载Vue 实例的DOM目标元素 都可以使用(区别于局部组件只能是挂载哪一个DOM,哪个才能使用)。
2.局部组件
定义方式示例:
var limitComponent = { props:["message"], template :"<div><h1>{{message}}</h1><input type='text' v-model='message'></input></div>" } new Vue ({ el : "#app", components :{ "child-component": limitComponent } });
使用
<child-component message = "动态局部组件"></child-component>
属性介绍:
el是 Vue 实例的挂载目标
"components" 是注册仅在其作用域中可用的组件
"child-component"组件的名称(书写规则请上翻再看规则)
limitComponent通过对象方式传递组件
品鉴
- 你不必把每个组件都注册到全局。你可以通过某个 Vue 实例/组件的实例选项 components 注册仅在其作用域中可用的组件。
- js中用反斜线“\”'实现字符串换行
3.Script方式注册组件
定义方式示例:
<script type="text/template" id="script-component"> <div > <h2>自定义组件之script方式定义</h2> <h4>{{message}}</h4> </div> </script> <script> Vue.component("mymac",{ props:["message"], template:"#script-component" }) var newVue = new Vue({ el:"#mac", data:{ mydata:"春暖花开" } }); </script>
使用
<div id="mac" > <input type="text" v-model="mydata" /> <mymac v-bind:message="mydata"></mymac> </div>
属性介绍:
<script type="text/template" id="script-component">
为定义组件的一种写法,type还可以取的值还可以有:
- text/javascript: 说明这一段脚本语言是javascript。告诉浏览器这一段要按照javascript来解释执行。在ES5之前的type默认值
- text/ecmascript:JavaScript和ECMAScript是相同的,只是在名称上是不同的。但是对于ecmascript-6而言就可以理解是JS的新语法特性。即HTML5中的默认值
- application/ecmascript: ie6、7、8都是没法识别里面的js语句的
- application/javascript: 这个属性在IE8以下的浏览器中无法被识别。
- text/vbscript: 表示该脚本语言是vb脚本
品鉴
Script定义组件方式笔者觉得就是组件定义方式的另一种写法。优点在于不用写字符串式HTML代码。将<script id="XX">的XX赋值给局部组件或者全局组件都可。
4.<template>创建组件
定义方式示例:
<template id="cc"> <div > <h1>{{message}}</h1> </div> </template> <script> Vue.component('templatec',{ props:["message"], template:"#cc" }) new Vue({ el:"#MyTemp" }) </script>
使用
<div id="MyTemp"> <templatec message ="template组件之Template标签"></templatec> </div>
属性介绍:
<template> 为HTML5发布后用来声明是“模板元素”的标签。即HTML5之前使用<script type ="text/template">
方式声明,而HTML5之后可用<template> 标签
品鉴
<template>定义组件的方式实际是HTML语法升级后的<script type ="text/template">
的另一种写法。同script定义组件一样,同样可以配合定义全局/局部组件。
总结
通篇全文,介绍的四种方式。实际上只有两种方式。要不就是全局定义方式,要不就是局部定义方式。另外两种是为了增加代码开发效率将字符串写法换成标签式书写方式。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 三国志8重制版恶名怎么消除 恶名影响与消除方法介绍
- 模拟之声慢刻CD《柏林之声5》2019[原抓WAV+CUE]
- AlexandraSoumm-Parisestunefte(2024)[24Bit-96kHz]FLAC
- 李嘉《国语转调1》[天王唱片][WAV整轨]
- 不是哥们 这都能跑?网友展示用720显卡跑《黑神话》
- 玩家自制《黑神话:悟空》亢金星君3D动画 现代妆容绝美
- 大佬的审美冲击!《GTA6》环境设计师展示最新作品
- 纪晓君.2001-野火·春风【魔岩】【WAV+CUE】
- 汪峰.2005-怒放的生命【创盟音乐】【WAV+CUE】
- 群星.1995-坠入情网【宝丽金】【WAV+CUE】
- 群星《谁杀死了Hi-Fi音乐》涂鸦精品 [WAV+CUE][1G]
- 群星1998《宝丽金最精彩98》香港首版[WAV+CUE][1G]
- 汪峰《也许我可以无视死亡》星文[WAV+CUE][1G]
- 李嘉-1991《国语转调2》[天王唱片][WAV整轨]
- 蔡琴2008《金声回忆录101》6CD[环星唱片][WAV整轨]