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代码,用以防止图片撑破页面
Mar 12 Javascript
JQuery textlimit 显示用户输入的字符数 限制用户输入的字符数
May 14 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
浅谈Javascript中匀速运动的停止条件
Dec 19 Javascript
jQuery判断对象是否存在的方法
Feb 05 Javascript
用JavaScript实现对话框的教程
Jun 04 Javascript
关于事件mouseover ,mouseout ,mouseenter,mouseleave的区别
Oct 12 Javascript
Jquery实现select multiple左右添加和删除功能的简单实例
May 26 Javascript
AngularJS基础 ng-keypress 指令简单示例
Aug 02 Javascript
强大的JavaScript响应式图表Chartist.js的使用
Sep 13 Javascript
使用微信小程序开发弹出框应用实例详解
Oct 18 Javascript
vue实现移动端悬浮窗效果
Dec 01 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
超外差式晶体管收音机的组装与统调
2021/03/01 无线电
php addslashes及其他清除空格的方法是不安全的
2012/01/25 PHP
yii权限控制的方法(三种方法)
2015/12/28 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
PHP面向对象程序设计之对象生成方法详解
2016/12/02 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
PHP chr()函数讲解
2019/02/11 PHP
FireFox与IE 下js兼容触发click事件的代码
2008/11/20 Javascript
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
jquery1.5.1中根据元素ID获取元素对象的代码
2011/04/02 Javascript
js精度溢出解决方案
2012/12/02 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
AJAX和jQuery动态加载数据的实现方法
2016/12/05 Javascript
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
详解vuex持久化插件解决浏览器刷新数据消失问题
2019/04/15 Javascript
ES6之Proxy的get方法详解
2019/10/11 Javascript
基于Vue中的父子传值问题解决
2020/07/27 Javascript
js实现3D旋转相册
2020/08/02 Javascript
Python实现在线程里运行scrapy的方法
2015/04/07 Python
详解python里使用正则表达式的全匹配功能
2017/10/19 Python
python3个性签名设计实现代码
2018/06/19 Python
对python csv模块配置分隔符和引用符详解
2018/12/12 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
Python API自动化框架总结
2019/11/12 Python
在notepad++中实现直接运行python代码
2019/12/18 Python
全球独特生活方式产品和礼品购物网站:AHAlife
2018/09/18 全球购物
西班牙多品牌鞋店连锁店:Krack
2018/11/30 全球购物
腾讯公司的一个sql题
2013/01/22 面试题
村委会换届选举方案
2014/05/03 职场文书
2014年教研组工作总结
2014/11/26 职场文书
物业客服专员岗位职责
2015/04/07 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
2016年党员读书月活动总结
2016/04/06 职场文书
导游词之广东佛山(南风古灶)
2019/09/24 职场文书