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 相关文章推荐
解密效果
Jun 23 Javascript
JS获取图片实际宽高及根据图片大小进行自适应
Aug 11 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
Jun 20 Javascript
JavaScript实现仿网易通行证表单验证
May 25 Javascript
JavaScript中字符串拼接的基本方法
Jul 07 Javascript
javascript动态生成树形菜单的方法
Nov 14 Javascript
JS实现两周内自动登录功能
Mar 23 Javascript
JavaScript循环_动力节点Java学院整理
Jun 28 Javascript
Bootstrap Table 搜索框和查询功能
Nov 30 Javascript
JS加密插件CryptoJS实现AES加密操作示例
Aug 16 Javascript
Layui实现带查询条件的分页
Jul 27 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 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
PHP 数组遍历方法大全(foreach,list,each)
2010/06/30 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
Yii针对添加行的增删改查操作示例
2016/10/18 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
PHP memcache在微信公众平台的应用方法示例
2017/09/13 PHP
Laravel框架学习笔记之批量更新数据功能
2019/05/30 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
2019/10/04 PHP
国外的为初学者写的JavaScript教程
2008/06/09 Javascript
JavaScript confirm选择判断
2008/10/18 Javascript
JavaScript中的onerror事件概述及使用
2013/04/01 Javascript
js转义字符介绍
2013/11/05 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
jQuery包裹节点用法完整示例
2016/09/13 Javascript
巧用canvas
2017/01/21 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
Vue shopCart 组件开发详解
2018/01/26 Javascript
Vue组件教程之Toast(Vue.extend 方式)详解
2019/01/27 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
Element Dialog对话框的使用示例
2020/07/26 Javascript
js实现弹窗效果
2020/08/09 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
使用Python对Access读写操作
2017/03/30 Python
Tensorflow之Saver的用法详解
2018/04/23 Python
详解Django-auth-ldap 配置方法
2018/12/10 Python
django model object序列化实例
2020/03/13 Python
Python文件操作基础流程解析
2020/03/19 Python
伦敦著名的运动鞋综合商店:Footpatrol
2019/03/25 全球购物
党员自我评价分享
2013/12/13 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
文秘应届生求职信
2014/07/05 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
保护环境建议书作文300字
2015/09/14 职场文书
Vue的过滤器你真了解吗
2022/02/24 Vue.js
DE1103使用报告
2022/04/05 无线电