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 定时器调用传递参数的方法
Nov 12 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
Aug 23 Javascript
表单元素的submit()方法和onsubmit事件应用概述
Feb 01 Javascript
jquery实现每个数字上都带进度条的幻灯片
Feb 20 Javascript
ExtJS的拖拽效果示例
Dec 09 Javascript
javascript实现模拟时钟的方法
May 13 Javascript
微信小程序 弹框和模态框实现代码
Mar 10 Javascript
ES6新特性之变量和字符串用法示例
Apr 01 Javascript
Node.js使用gm拼装sprite图片
Jul 04 Javascript
简单实现js放大镜效果
Jul 24 Javascript
分析JS单线程异步io回调的特性
Dec 01 Javascript
微信小程序中weui用法解析
Oct 21 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 团购折扣计算公式
2011/11/24 PHP
利用PHP生成静态html页面的原理
2016/09/30 PHP
php封装的图片(缩略图)处理类完整实例
2016/10/19 PHP
PHP精确计算功能示例
2016/11/29 PHP
PHP微信模板消息操作示例
2017/06/29 PHP
Yii2压缩PHP中模板代码的输出问题
2018/08/28 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
2020/01/22 PHP
CSS+Table图文混排中实现文本自适应图片宽度(超简单+跨所有浏览器)
2009/02/14 Javascript
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
jQuery与ExtJS之选择实例分析
2010/08/19 Javascript
基于jQuery的Tab选项框效果代码(插件)
2011/03/01 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
2013/11/20 Javascript
js实现checkbox全选和反选示例
2014/05/01 Javascript
javascript实现单击和双击并存的方法
2014/12/13 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
javascript通过元素id和name直接取得元素的方法
2015/04/28 Javascript
实例详解ECMAScript5中新增的Array方法
2016/04/05 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
详解如何探测小程序返回到webview页面
2019/05/14 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python编程实现从字典中提取子集的方法分析
2018/02/09 Python
使用TensorFlow实现SVM
2018/09/06 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
django使用LDAP验证的方法示例
2018/12/10 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
Ranorex通过Python将报告发送到邮箱的方法
2020/01/12 Python
解决python -m pip install --upgrade pip 升级不成功问题
2020/03/05 Python
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
Harrods英国:世界领先的奢侈品百货商店
2020/09/23 全球购物
将n个数按输入顺序的逆序排列,用函数实现
2012/11/14 面试题