Vue自定义组件的四种方式示例详解


Posted in Javascript onFebruary 28, 2020

四种组件定义方式都存在以下共性(血泪史)

规则:

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定义组件一样,同样可以配合定义全局/局部组件。

总结

通篇全文,介绍的四种方式。实际上只有两种方式。要不就是全局定义方式,要不就是局部定义方式。另外两种是为了增加代码开发效率将字符串写法换成标签式书写方式。

到此这篇关于Vuejs自定义组件的四种方式的文章就介绍到这了,更多相关vue 自定义组件内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js 实现打印网页中定义的部分内容的代码
Apr 01 Javascript
IE不支持getElementsByClassName最终完美解决方案
Dec 17 Javascript
浅谈javascript中this在事件中的应用
Feb 15 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
Jun 14 Javascript
基于daterangepicker日历插件使用参数注意的问题
Aug 10 Javascript
微信小程序switch组件使用详解
Jan 31 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
Apr 09 Javascript
解决node.js含有%百分号时发送get请求时浏览器地址自动编码的问题
Nov 20 Javascript
jQuery实现验证用户登录
Dec 10 jQuery
使用JavaScript实现网页秒表功能(含开始、暂停、继续、重置功能)
Jun 05 Javascript
js实现筛选功能
Nov 24 Javascript
React如何使用axios请求数据并把数据渲染到组件
Aug 05 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
Feb 28 #Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 #Javascript
基于vue-cli3+typescript的tsx开发模板搭建过程分享
Feb 28 #Javascript
vue 中的 render 函数作用详解
Feb 28 #Javascript
微信小程序动态添加和删除组件的现实
Feb 28 #Javascript
浅析Vue 中的 render 函数
Feb 28 #Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 #Javascript
You might like
PHP的栏目导航程序
2006/10/09 PHP
php倒计时出现-0情况的解决方法
2016/07/28 PHP
php封装的验证码类分享
2017/02/26 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php代码调试利器firephp安装与使用方法分析
2018/08/21 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
jQuery1.4.2与老版本json格式兼容的解决方法
2011/02/12 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
jQuery EasyUI tree 使用拖拽时遇到的错误小结
2016/10/10 Javascript
Vue.js常用指令汇总(v-if、v-for等)
2016/11/03 Javascript
BootStrap 模态框实现刷新网页并关闭功能
2017/01/04 Javascript
js的函数的按值传递参数(实例讲解)
2017/11/16 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
Openlayers实现图形绘制
2020/09/28 Javascript
利用selenium 3.7和python3添加cookie模拟登陆的实现
2017/11/20 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
python+opencv轮廓检测代码解析
2018/01/05 Python
Python反爬虫技术之防止IP地址被封杀的讲解
2019/01/09 Python
python 遍历pd.Series的index和value
2019/11/26 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
HTML5 HTMLCollection和NodeList的区别详解
2020/04/29 HTML / CSS
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
JBL加拿大官方商店:扬声器、耳机等
2020/10/23 全球购物
英语系毕业生求职信
2014/07/13 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
离婚协议书范本
2015/01/26 职场文书
辞职信的写法
2015/02/27 职场文书
车辆管理制度范本
2015/08/05 职场文书
小学四年级作文之写景
2019/08/23 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python
Go语言怎么使用变长参数函数
2022/07/15 Golang