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之原型和继承
Jul 06 Javascript
SlideView 图片滑动(扩展/收缩)展示效果
Aug 01 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
javascript实现依次输入input自动定焦
Dec 23 Javascript
由浅入深讲解Javascript继承机制与simple-inheritance源码分析
Dec 13 Javascript
jQuery插件HighCharts实现的2D条状图效果示例【附demo源码下载】
Mar 15 Javascript
Vue项目分环境打包的实现步骤
Apr 02 Javascript
详解JavaScript的数据类型以及数据类型的转换
Apr 20 Javascript
简单了解微信小程序的目录结构
Jul 01 Javascript
layui-table对返回的数据进行转变显示的实例
Sep 04 Javascript
微信公众号服务器验证Token步骤图解
Dec 30 Javascript
vue实现分页的三种效果
Jun 23 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
第七节--类的静态成员
2006/11/16 PHP
Yii2框架制作RESTful风格的API快速入门教程
2016/11/08 PHP
PHP上传图片、删除图片简单实例
2016/11/12 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
2018/08/20 PHP
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
2011/05/28 Javascript
javascript之querySelector和querySelectorAll使用说明
2011/10/09 Javascript
多种方法实现JS动态添加事件
2013/11/01 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
用C/C++来实现 Node.js 的模块(一)
2014/09/24 Javascript
JS for循环中i++ 和 ++i的区别介绍
2016/07/20 Javascript
AngularJS中$http服务常用的应用及参数
2016/08/22 Javascript
Bootstrap 手风琴菜单的实现代码
2017/01/20 Javascript
日期时间范围选择插件:daterangepicker使用总结(必看篇)
2017/09/14 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
使用Bootstrap4 + Vue2实现分页查询的示例代码
2017/12/21 Javascript
9种使用Chrome Firefox 自带调试工具调试javascript技巧
2017/12/22 Javascript
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
html5以及jQuery实现本地图片上传前的预览代码实例讲解
2021/03/01 jQuery
Python中的异常处理简明介绍
2015/04/13 Python
Python读取mat文件,并转为csv文件的实例
2018/07/04 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
解决使用PyCharm时无法启动控制台的问题
2019/01/19 Python
Python第三方库h5py_读取mat文件并显示值的方法
2019/02/08 Python
python内置模块collections知识点总结
2019/12/19 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
Python实现文件压缩和解压的示例代码
2020/08/12 Python
python 使用三引号时容易犯的小错误
2020/10/21 Python
美国沙龙美发产品购物网站:Hair.com by L’Oreal
2020/11/09 全球购物
娇韵诗香港官网:Clarins香港
2020/08/13 全球购物
好邻里事迹材料
2014/01/16 职场文书
护士辞职信模板
2014/01/20 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
义诊活动总结
2015/02/04 职场文书
养成教育主题班会
2015/08/13 职场文书
严以律己学习心得体会
2016/01/13 职场文书