前言

vue 组件有很多种写法,最常见的是单文件组件(.vue)的三段式,但除此之外还有其他的书写方式,了解更多对我们后续的开发有很大的帮助。本文介绍 vue 组件全部的写法。

vue 两个版本的区别详见 Vue 的两个版本

template 写法

template 的写法依赖 vue-template-compiler编译器。
使用语法如下:

  1. Vue.component("cp-test", {
  2. template: `
  3. <div>
  4. {{hi}}
  5. <p>其他内容</p>
  6. </div>
  7. `,
  8. data() {
  9. return {
  10. hi: "我是组件"
  11. }
  12. }
  13. })

render 函数写法

render 函数不依赖任何编译器,是最原始的写法。其中 h 是 createElement的简写别名。
使用语法如下:

  1. Vue.component("cp-test", {
  2. render(h) {
  3. return h("div", [
  4. this.hi,
  5. h("p", [
  6. "其他内容"
  7. ])
  8. ])
  9. },
  10. data() {
  11. return {
  12. hi: "我是组件"
  13. }
  14. }
  15. })

jsx 写法

jsx 写法是在 render 函数写法的基础上做的延伸,依赖 jsx 编译器,即 babel,具体配置详见 babel jsx vue2
使用语法如下:

  1. Vue.component("cp-test", {
  2. render(h) {
  3. return (
  4. <div>
  5. {{hi}}
  6. <p>其他内容</p>
  7. </div>
  8. )
  9. },
  10. data() {
  11. return {
  12. hi: "我是组件"
  13. }
  14. }
  15. })

单文件写法

单文件写法依赖 vue-loader编译器。
使用语法如下:

  1. // test.vue
  2. <template>
  3. <div>
  4. {{ hi }}
  5. <p>其他内容</p>
  6. </div>
  7. </template>
  8. <script>
  9. export default {
  10. data() {
  11. return {
  12. hi: "我是组件"
  13. }
  14. }
  15. }
  16. </script>
  17. <style>
  18. /* 样式 */
  19. </style>