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 Event学习第五章 高级事件注册模型
Feb 07 Javascript
让JavaScript拥有类似Lambda表达式编程能力的方法
Sep 12 Javascript
idTabs基于JQuery的根据URL参数选择Tab插件
Apr 11 Javascript
Mac OS X 系统下安装和部署Egret引擎开发环境
Sep 03 Javascript
JavaScript中逗号运算符介绍及使用示例
Mar 13 Javascript
使用Angular.js实现简单的购物车功能
Nov 21 Javascript
JavaScript事件冒泡与事件捕获实例分析
Aug 01 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
利用jquery和BootStrap实现动态滚动条效果
Dec 03 jQuery
JS字符串与二进制的相互转化实例代码详解
Jun 28 Javascript
JS实现网页时钟特效
Mar 25 Javascript
ant-design-vue中tree增删改的操作方法
Nov 03 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
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
django中的ajax组件教程详解
2018/10/18 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
服务器安全设置的几个注册表设置
2007/07/28 Javascript
JS远程获取网页源代码实例
2013/09/05 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
JavaSciprt中处理字符串之sup()方法的使用教程
2015/06/08 Javascript
jQuery实现的分子运动小球碰撞效果
2016/01/27 Javascript
3kb jQuery代码搞定各种树形选择的实现方法
2016/06/10 Javascript
JQ选择器_选择同类元素的第N个子元素的实现方法
2016/09/08 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
2017/06/15 Javascript
Vue computed计算属性的使用方法
2017/07/14 Javascript
原生nodejs使用websocket代码分享
2018/04/07 NodeJs
React和Vue中监听变量变化的方法
2018/11/14 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
python获取beautifulphoto随机某图片代码实例
2013/12/18 Python
python访问系统环境变量的方法
2015/04/29 Python
pygame游戏之旅 创建游戏窗口界面
2018/11/20 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
python处理写入数据代码讲解
2020/10/22 Python
Araks官网:纽约内衣品牌
2020/10/15 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
工程预算与管理应届生求职信
2013/10/06 职场文书
营业员个人总结的自我评价
2013/10/25 职场文书
cf收人广告词大全
2014/03/14 职场文书
联谊会主持词
2014/03/26 职场文书
《得道多助,失道寡助》教学反思
2014/04/19 职场文书
广告策划的实习心得体会总结!
2019/07/22 职场文书
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫