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 相关文章推荐
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
JavaScript类和继承 constructor属性
Mar 04 Javascript
基于jquery的页面划词搜索JS
Sep 14 Javascript
发布一个基于javascript的动画类 Fx.js
Nov 05 Javascript
JavaScript中使用ActiveXObject操作本地文件夹的方法
Mar 28 Javascript
一个JavaScript获取元素当前高度的实例
Oct 29 Javascript
微信JS接口汇总及使用详解
Jan 09 Javascript
JQuery异步获取返回值中文乱码的解决方法
Jan 29 Javascript
详谈LABJS按需动态加载js文件
May 07 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
使用JavaScriptCore实现OC和JS交互详解
Mar 28 Javascript
WebStorm无法正确识别Vue3组合式API的解决方案
Feb 18 Vue.js
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
php curl 模拟登录并获取数据实例详解
2016/12/22 PHP
javascript 写类方式之十
2009/07/05 Javascript
jqPlot Option配置对象详解
2009/07/25 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
jquery改变disabled的boolean状态的三种方法
2013/12/13 Javascript
nodejs 实现模拟form表单上传文件
2014/07/14 NodeJs
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
悬浮广告方法日常收集整理
2016/03/18 Javascript
jQuery ajaxForm()的应用
2016/10/14 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
bootstrap 点击空白处popover弹出框隐藏实例
2018/01/24 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
深入浅析JavaScript中的in关键字和for-in循环
2020/04/20 Javascript
vue内置组件component--通过is属性动态渲染组件操作
2020/07/28 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
[05:00]TI9战队采访 - Royal Never Give Up
2019/08/20 DOTA
python列表与元组详解实例
2013/11/01 Python
python网络爬虫采集联想词示例
2014/02/11 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
python paramiko利用sftp上传目录到远程的实例
2019/01/03 Python
Python3.7 dataclass使用指南小结
2019/02/22 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
Python中模块(Module)和包(Package)的区别详解
2019/08/07 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
HTML5 form标签之解放表单验证、增加文件上传、集成拖放的使用方法
2013/04/24 HTML / CSS
html5 Canvas实现图片旋转的示例
2018/01/15 HTML / CSS
英国领先的家庭时尚品牌:Peacocks
2018/01/11 全球购物
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
运动会领导邀请函
2014/01/10 职场文书
小区消防演习方案
2014/02/21 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
2015年信息中心工作总结
2015/05/25 职场文书
病假证明模板
2015/06/19 职场文书
《雪地里的小画家》教学反思
2016/02/16 职场文书
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python