您好,欢迎访问一九零五行业门户网

vue怎么写组件

这次给大家带来vue怎么写组件,vue写组件的注意事项有哪些,下面就是实战案例,一起来看一下。
写一个vue组件
我下面写的是以.vue结尾的单文件组件的写法,是基于webpack构建的项目。如果还不知道怎么用webpack构建一个vue的工程的,可以移步到vue-cli。
一个完整的vue组件会包括一下三个部分:
template:模板
js: 逻辑
css : 样式
每个组件都有属于自己的模板,js和样式。如果将一个页面比喻成一间房子的话,组件就是房子里的客厅、卧室、厨房、厕所。如果把厨房单独拿出来的话,组件又可以是刀、油烟机...等等。就是说页面是由组件构成的,而组件也可以是组件构成的。这样就可以非常的灵活,耦合性也非常的低。
先来看看一个组件在不是.vue文件内的写法:
vue.component('simple-counter', {  template: '<p id="inputbox"><input type="text"></p>',  data () {   // 数据  return {   counter: 0  }  },  methods: {  // 写点方法  },  created () {  // 生命钩子  },  computed: {  // 计算属性  } })
template是用来干嘛的呢?
<template>  <p id="inputbox">  <input type="text">  </p> </template> <!-- template就是这个组件的html,也就是下面部分(vue-loader会将template标签下的内容解析出来): --> <p id="inputbox">  <input type="text"> </p> <!-- 对应原生写法的话,就是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>  <p class="button">  <button @click="onclick">{{text}}</button>  </p> </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>  <p class="box">  <v-button :text="text"></v-button>    <!--使用组件并传值(text)-->  </p> </template> <script> import button from './button.vue'  // 引入子组件 export default {  components: {  'v-button': button  },  data () {  return {   text: '按键的name'  }  },  methods: {  } } </script>
相信看了本文案例你已经掌握了方法,更多精彩请关注其它相关文章!
推荐阅读:
webpack热刷新与热加载使用详解
code spliting优化vue打包步骤详解
以上就是vue怎么写组件的详细内容。
其它类似信息

推荐信息