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 相关文章推荐
JavaScript的Cookies
Jan 16 Javascript
分享十五个最佳jQuery 幻灯插件和教程
Mar 27 Javascript
用Jquery重写windows.alert方法实现思路
Apr 03 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
Mar 18 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
Aug 24 Javascript
jquery动态添加带有样式的HTML标签元素方法
Feb 24 jQuery
webpack4打包vue前端多页面项目
Sep 17 Javascript
vue-router的使用方法及含参数的配置方法
Nov 13 Javascript
微信小程序实现搜索功能并跳转搜索结果页面
May 18 Javascript
vue中v-show和v-if的异同及v-show用法
Jun 06 Javascript
JS数组的高级使用方法示例小结
Mar 14 Javascript
关于Vue中$refs的探索浅析
Nov 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生成的一个树叶图片画图例子
2014/04/16 PHP
Codeigniter操作数据库表的优化写法总结
2014/06/12 PHP
PHP中trim()函数简单使用指南
2015/04/16 PHP
PHP可变变量学习小结
2015/11/29 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
jquery中获取元素的几种方式小结
2011/07/05 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
js获取height和width的方法说明
2013/01/06 Javascript
JS操作JSON要领详细总结
2013/08/25 Javascript
js获取select标签选中值的两种方式
2014/01/09 Javascript
详解JavaScript中undefined与null的区别
2014/03/29 Javascript
分享33个jQuery与CSS3实现的绚丽鼠标悬停效果
2014/12/15 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
Javascript的表单验证-提交表单
2016/03/18 Javascript
KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机的方法
2016/10/05 Javascript
vue快捷键与基础指令详解
2017/06/01 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
2017/05/11 Python
详解django三种文件下载方式
2018/04/06 Python
利用pandas读取中文数据集的方法
2018/07/25 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python英语单词测试小程序代码实例
2019/09/09 Python
Python Selenium 设置元素等待的三种方式
2020/03/18 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
日本著名化妆品零售网站:Cosme Land
2019/03/01 全球购物
介绍一下Java的事务处理
2012/12/07 面试题
市场部规章制度
2014/01/24 职场文书
报关报检委托书
2014/04/08 职场文书
服务理念口号
2014/06/11 职场文书
党的群众路线对照检查材料思想汇报(学校)
2014/10/04 职场文书
2014年党员自我剖析材料
2014/10/07 职场文书
Python实现socket库网络通信套接字
2021/06/04 Python
十大最帅动漫男主 碓冰拓海上榜,第一是《灌篮高手》男主角
2022/03/18 日漫
Win10/Win11 任务栏替换成经典样式
2022/04/19 数码科技