vue组件的写法汇总


Posted in Javascript onApril 12, 2018

数据驱动和组件化是vue.js两个最重要的特点。组件化是为了方便代码复用,提高开发效率。常见的vue组件写法有四种,各有特色,适用于不同的场景。

1、全局组件

结构:

// 组件的注册 
Vue.component( 'componentName', { 
 template: // 组件的html结构, 
 data(){ 
 return{ 
  // 组件中的属性 
 } 
 }, 
 method: { 
 // 组件中的方法 
 } 
 ...... // 组件其他的属性和方法 
}) 
// 组件的使用 
new Vue({ 
 el: '#app' 
})

在script标签内通过Vue.component()定义一个全局组件,并通过new Vue()实例将组件应用到html文件中id为app的标签内。

特点:

<1>可以直接在html文件中的script标签内直接定义与使用;

<2>通过该方法定义的组件是全局组件,在任何Vue实例下都可以使用,适合项目比较简单的场景;

<3>每次定义组件时都要重新使用Vue.component(),且组件名不能相同;

实例:

Welcome组件

2、局部组件

结构:

// 构造组件对象 
const componentName = { 
 template: // 组件的html结构, 
 data(){ 
 return{ 
  // 组件中的属性 
 } 
 }, 
 method: { 
 // 组件中的方法 
 } 
 ...... // 组件其他的属性和方法 
} 
// 组件的使用 
new Vue({ 
 el: '#app', 
 components: { 
 // 组件注册、调用 
 componentName 
 } 
})

在script标签中通过定义一个组件对象,并通过Vue实例中components属性将该组件注册调用。

特点:

<1>与全局方式定义的组件相似,都可以直接在html文件中的script标签中直接书写组件与使用;

<2>只有在注册过的Vue实例中才能使用该组件;

实例:

Welcome组件

3、使用template标签

结构:

<template id="componnet"> 
 // 组件的html结构 
</template> 
// 全局组件的注册与使用 
Vue.component( 'componentName', { 
 template: '#component', 
 data(){ 
 return{ 
  // 组件中的属性 
 } 
 }, 
 method: { 
 // 组件中的方法 
 } 
 ...... // 组件其他的属性和方法 
}) 
new Vue({ 
 el: '#app' 
}) 
// 局部组件的注册与使用 
const componentName = { 
 template: '#component', 
 data(){ 
 return{ 
  // 组件中的属性 
 } 
 }, 
 method: { 
 // 组件中的方法 
 } 
 ...... // 组件其他的属性和方法 
} 
new Vue({ 
 el: '#app', 
 components: { 
 // 组件注册、调用 
 componentName 
 } 
})

使用template标签将组件中的html结构写在body标签内部,在script标签内按照全局组件和局部组件的方式注册与使用。不同之处在于组件中template属性是通过id引用。

特点:

<1>js文件中不包含html结构内容,实现结构与逻辑分离;

实例:

Welcome组件

4、单文件组件

结构:

<template lang="html"> 
 // 组件中的html结构 
</template> 
<script> 
 //组件的逻辑 
 export default { 
 // 组件的属性和方法 
 } 
</script> 
<style lang="css" scoped> 
 // 组件的样式 
</style>

创建一个尾缀为vue的文件,文件名即为组件名。组件内包含三部分内容:html结构、js逻辑、css样式,分别对应于不同的标签。使用时组件时,通过import引入即可使用。

特点:

<1>组件与组件之间互不影响,复用性高,其html、css、js均可复用;

<2>组件的结构、逻辑清晰;

<3>适用于大型复杂项目,适合多人开发;

实例:

Welcome组件

!!!需要注意的是:template标签内必须用一个标签将所有的标签包裹,否则会报错

正确的写法:

<template> 
 <div> 
 <div></div> 
 ...... 
 <div></div> 
 </div> 
</template>

错误的写法:

<template> 
 <div></div> 
 <div></div> 
 ...... 
 <div></div> 
</template>

总结

以上所述是小编给大家介绍的vue组件的写法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript 字符 Escape,encodeURI,encodeURIComponent
Jul 09 Javascript
调用js时ie6和ie7,ff的区别
Aug 19 Javascript
jQuery学习笔记(1)--用jQuery实现异步通信(用json传值)具体思路
Apr 08 Javascript
JS实现多物体缓冲运动实例代码
Nov 29 Javascript
简介AngularJS的视图功能应用
Jun 17 Javascript
JavaScript实现同时调用多个函数的方法
Nov 09 Javascript
javascript实现简单的全选和反选功能
Jan 05 Javascript
下雪了 javascript实现雪花飞舞
Aug 02 Javascript
JavaScript 数组some()和filter()的用法及区别
May 20 Javascript
jQuery中deferred对象使用方法详解
Jul 14 Javascript
Vue模拟数据,实现路由进入商品详情页面的示例
Aug 31 Javascript
正则表达式基础与常用验证表达式
Jun 16 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 #jQuery
基于vue-simplemde实现图片拖拽、粘贴功能
Apr 12 #Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 #Javascript
JavaScript实现简单的文本逐字打印效果示例
Apr 12 #Javascript
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 #jQuery
Koa项目搭建过程详细记录
Apr 12 #Javascript
React props和state属性的具体使用方法
Apr 12 #Javascript
You might like
PHP分页显示制作详细讲解
2006/12/05 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php 发送带附件邮件示例
2014/01/23 PHP
Smarty局部缓存的几种方法简介
2014/06/17 PHP
Thinkphp5结合layer弹窗定制操作结果页面
2017/07/07 PHP
PHP魔术方法之__call与__callStatic使用方法
2017/07/23 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
Javascript下的keyCode键码值表
2007/04/10 Javascript
javascript 获取网页参数系统
2008/07/19 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
javascript demo 基本技巧
2009/12/18 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
JS实现百度搜索接口及链接功能实例代码
2018/02/02 Javascript
如何在Vue.js中实现标签页组件详解
2019/01/02 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
python连接mysql调用存储过程示例
2014/03/05 Python
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
浅析python中的分片与截断序列
2016/08/09 Python
python 打印对象的所有属性值的方法
2016/09/11 Python
Django组件content-type使用方法详解
2019/07/19 Python
Django上线部署之IIS的配置方法
2019/08/22 Python
Python如何将图像音视频等资源文件隐藏在代码中(小技巧)
2020/02/16 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
Python批量删除mysql中千万级大量数据的脚本分享
2020/12/03 Python
python 实现百度网盘非会员上传超过500个文件的方法
2021/01/07 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
印度最大的时尚购物网站:Myntra
2018/09/13 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
文明单位创建材料
2014/12/24 职场文书
酒店财务总监岗位职责
2015/04/03 职场文书
2016党员党课心得体会
2016/01/07 职场文书
读《解忧杂货店》有感:请相信一切都是最好的安排
2019/11/07 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android
浅谈Python3中datetime不同时区转换介绍与踩坑
2021/08/02 Python