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 相关文章推荐
AJAX使用了UpdatePanel后无法使用alert弹出脚本
Apr 02 Javascript
js中widow.open()方法使用详解
Jul 30 Javascript
jQuery实现的Div窗口震动特效
Jun 09 Javascript
JavaScript获取网页中第一个图片id的方法
Apr 03 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
Nov 19 Javascript
javascript事件模型介绍
May 31 Javascript
Knockoutjs 学习系列(一)ko初体验
Jun 07 Javascript
JS中如何实现Laravel的route函数详解
Feb 12 Javascript
bootstrap模态框示例代码分享
May 17 Javascript
React Native验证码倒计时工具类分享
Oct 24 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
element中el-container容器与div布局区分详解
May 13 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 5.0对象模型深度探索之类的静态成员
2008/03/27 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
2014/04/14 PHP
php生成mysql的数据字典
2016/07/07 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
2017/07/21 PHP
Alliance vs AM BO3 第二场2.13
2021/03/10 DOTA
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
浅析javascript中function 的 length 属性
2014/05/27 Javascript
js显示文本框提示文字的方法
2015/05/07 Javascript
Javascript必知必会(四)js类型转换
2016/06/08 Javascript
JavaScript代码里的判断小结
2016/08/22 Javascript
JS基于HTML5的canvas标签实现炫目的色相球动画效果实例
2016/08/24 Javascript
angular ngClick阻止冒泡使用默认行为的方法
2016/11/03 Javascript
JS实现复选框的全选和批量删除功能
2017/04/05 Javascript
Vue父组件调用子组件事件方法
2018/02/23 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
深入Vue-Router路由嵌套理解
2018/08/13 Javascript
Vue.js 中的 v-cloak 指令及使用详解
2018/11/19 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
vue的keep-alive中使用EventBus的方法
2019/04/23 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
layui 富文本编辑器和textarea值的相互传递方法
2019/09/18 Javascript
Python3.2中的字符串函数学习总结
2015/04/23 Python
Python简单实现Base64编码和解码的方法
2017/04/29 Python
Python 加密的实例详解
2017/10/09 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
ubuntu17.4下为python和python3装上pip的方法
2018/06/12 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
详解程序意外中断自动重启shell脚本(以Python为例)
2019/07/26 Python
班级聚会策划书
2014/01/16 职场文书
自我鉴定写作要点
2014/01/17 职场文书
社团招新策划书
2014/02/04 职场文书
大学四年个人总结
2015/03/03 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
MySQL数据库10秒内插入百万条数据的实现
2021/11/01 MySQL