vue写一个组件


Posted in Javascript onApril 09, 2018

写一个vue组件

我下面写的是以.vue结尾的单文件组件的写法,是基于webpack构建的项目。如果还不知道怎么用webpack构建一个vue的工程的,可以移步到vue-cli。

一个完整的vue组件会包括一下三个部分:

  1. template:模板
  2. js: 逻辑
  3. css : 样式

每个组件都有属于自己的模板,js和样式。如果将一个页面比喻成一间房子的话,组件就是房子里的客厅、卧室、厨房、厕所。如果把厨房单独拿出来的话,组件又可以是刀、油烟机...等等。就是说页面是由组件构成的,而组件也可以是组件构成的。这样就可以非常的灵活,耦合性也非常的低。

先来看看一个组件在不是.vue文件内的写法:

Vue.component('simple-counter', {
 template: '<div id="inputBox"><input type="text"></div>',
 data () {   // 数据
 return {
  counter: 0
 }
 },
 methods: {
 // 写点方法
 },
 created () {
 // 生命钩子
 },
 computed: {
 // 计算属性
 }
})

template是用来干嘛的呢?

<template>
 <div id="inputBox">
 <input type="text">
 </div>
</template>
<!--
template就是这个组件的html,也就是下面部分(vue-loader会将template标签下的内容解析出来):
-->
<div id="inputBox">
 <input type="text">
</div>
<!--
 对应原生写法的话,就是template内的dom字符串
-->

js部分

export default {
 data () {
 return {
  counter: 0
 }
 },
 methods: {
 // 方法
 },
 created () {
 // 生命钩子
 },
 computed: {
 // 计算属性
 }
}
// 在这里很明显js部分就是对应的原生写法内的非template部分了。
// export default这个是es6的模块写法,不懂的可以先去了解es6的模块化

css部分

<style lang="scss" scoped>
...样式
</style>

<!--这里的你可以使用scss(CSS扩展语言)只要安装"sass-loader"和"node-sass"这两个npm包就好了,vue-cli已经配好相关参数了。如果想使用less或其它css扩展语音,只要装好各自的编译包就好了。而scoped是让css的作用域只在该文件下。-->

引入

要怎么在其它组件引用该组件?

组件一(button.vue)

<template>
 <div class="button">
 <button @click="onClick">{{text}}</button>
 </div>
</template>
<script>
export default {
 props: ['text'],   // 获取父组件的传值
 data () {
 return {

 }
 },
 methods: {
 onClick () {
  console.log('点击了子组件')
 }
 }
}
</script>
<style lang="scss" scoped>
.button {
 button {
 width: 100px;
 }
}
</style>

组件二(box.vue)

<template>
 <div class="box">
 <v-button :text="text"></v-button>    <!--使用组件并传值(text)-->
 </div>
</template>
<script>
import Button from './button.vue'  // 引入子组件
export default {
 components: {
 'v-button': Button
 },
 data () {
 return {
  text: '按键的name'
 }
 },
 methods: {

 }
}
</script>

总结

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

Javascript 相关文章推荐
javascript 日期时间函数(经典+完善+实用)
May 27 Javascript
alert出数组中的随即值代码
Sep 25 Javascript
jQuery中nextAll()方法用法实例
Jan 07 Javascript
JavaScript实现基于Cookie的存储类实例
Apr 10 Javascript
jquery实现红色竖向多级向右展开的导航菜单效果
Aug 31 Javascript
用JS实现轮播图效果(二)
Jun 26 Javascript
js自调用匿名函数的三种写法(推荐)
Aug 19 Javascript
js+css3制作时钟特效
Oct 16 Javascript
vue-music 使用better-scroll遇到轮播图不能自动轮播问题
Dec 03 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
jquery分页优化操作实例分析
Aug 23 jQuery
JS模拟实现京东快递单号查询
Nov 30 Javascript
Vue 中使用 CSS Modules优雅方法
Apr 09 #Javascript
JS中双击和单击事件冲突的解决方法
Apr 09 #Javascript
vue脚手架及vue-router基本使用
Apr 09 #Javascript
vue 设置proxyTable参数进行代理跨域
Apr 09 #Javascript
Angular入口组件(entry component)与声明式组件的区别详解
Apr 09 #Javascript
快速搭建vue2.0+boostrap项目的方法
Apr 09 #Javascript
webpack 模块热替换原理
Apr 09 #Javascript
You might like
Laravel5.5新特性之友好报错以及展示详解
2017/08/13 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
javascript编程起步(第二课)
2007/02/27 Javascript
js 利用className得到对象的实现代码
2011/11/15 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
jquery更换文章内容与改变字体大小代码
2013/09/30 Javascript
使用jquery组件qrcode生成二维码及应用指南
2015/02/22 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
jQuery模拟Marquee实现无缝滚动效果完整实例
2016/09/29 Javascript
微信小程序 数据访问实例详解
2016/10/08 Javascript
jquery获取select选中值的文本,并赋值给另一个输入框的方法
2018/08/21 jQuery
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
Angular PWA使用的Demo示例
2019/01/31 Javascript
vue2.0 获取从http接口中获取数据,组件开发,路由配置方式
2019/11/04 Javascript
vue 保留两位小数 不能直接用toFixed(2) 的解决
2020/08/07 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
Python中的XML库4Suite Server的介绍
2015/04/14 Python
在Python的Django框架中实现Hacker News的一些功能
2015/04/17 Python
python模拟enum枚举类型的方法小结
2015/04/30 Python
linux下python抓屏实现方法
2015/05/22 Python
Python使用openpyxl读写excel文件的方法
2017/06/30 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
python实现对象列表根据某个属性排序的方法详解
2019/06/11 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
do you have any Best Practice for testing
2016/06/04 面试题
中医药大学市场营销专业自荐信
2013/09/29 职场文书
好的自荐信的要求
2013/10/30 职场文书
承办会议欢迎词
2014/01/17 职场文书
绩效工资分配方案
2014/01/18 职场文书
市场部经理岗位职责
2015/02/02 职场文书
瞿秋白纪念馆观后感
2015/06/10 职场文书
使用Oracle跟踪文件的问题详解
2021/06/28 Oracle
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL