聊一聊Vue组件模版,你知道它有几种定义方式吗?

前端组件化开发已是一个老生常谈的话题了,组件化让咱们的开发效率以及维护成本带来了质的提高。前端

固然由于如今的系统愈来愈复杂庞大,因此开发与维护成本就变得必需要考虑的问题,所以滋生出了目前的三大前端框架 Vue、Angular、React。编程

那今天咱们就来看看 Vue 中有哪些定义组件模版的方式以及他们之间的一些差异。浏览器

1.字符串形式

Vue 最简单直接的一种定义组件模版的方式,可是方式写起来很不友好,就像咱们之前拼接 HTML 元素是同样的,很痛苦,因此咱们并不经常使用bash

Vue.component("my-button", {
  data: function () {
    return {
      label: "是兄弟就来砍我"
    }
  },
  template: "<button>{{label}}</button>"
});
复制代码

2.模版字面量

模版字面量 ES6 语法,与字符串不一样的是,咱们能够进行多行书写,相对单纯字符串有很大优点,体验更优,可是可能浏览器兼容性会存在问题,须要进行转译为 ES5 语法。前端框架

Vue.component("my-content", {
  data: function () {
    return {
      label: "是兄弟就来砍我",
      content: "刀刀暴击"
    }
  },
  template: `
    <div>
      <button>{{ label }}</button>
      <span>{{ content }}</span>
    </div>
  `
});
复制代码

3.内联模版(inline-template)

与 「X-template」模版定义方式被称为模版定义的替代品,把内容定义在组件标签元素的内部,而不是做为 slot 内容分发,方式比较灵活,可是给让咱们组件的模版与其余属性分离开。框架

<my-label inline-template>
  <span>{{label}}</span>
</my-label>
Vue.component('my-label', {
  data: function () {
    return {
      label: "赶忙上车吧,兄die"
    }
  }
})
复制代码

4.X-template

定义一个<script>标签,标记text/x-template 类型,经过 id 连接。函数

<script type="text/x-template" id="label-template">
    <span>{{label}}</span>
</script>
Vue.component('my-label', {
  template: "#label-template",
  data: function () {
    return {
      label: "赶忙上车吧,兄die"
    }
  }
})
复制代码

5.渲染函数

渲染函数须要 JavaScript 彻底的编程能力,并且比模版更接近编译,但须要咱们很是熟悉 Vue的实例属性,也会更加的抽象。像 v-if v-for 指令就能够用 JavaScript 语法轻松实现。工具

Vue.component('my-label', {
  data: function () {
    return {
      items: ['来就送!', '来就送!', '来就送!']
    }
  },
  render: function (createElement) {
    if (this.items.length) {
      return createElement('ul', this.items.map(function (item) {
        return createElement('li', item)
      }))
    } else {
      return createElement('p', '活动结束')
    }
  }
})
复制代码

6.JSX

相比渲染函数的抽象而言,JSX 比较容易一些,对于熟悉 React 的同窗是比较友好的。组件化

Vue.component('my-label', {
  data: function () {
    return {
      label: ["活动结束"]
    }
  },
  render(){
    return <div>{this.label}</div>
  }
})
复制代码

7.单文件组件

使用构建工具 cli 建立项目,综合来看单文件组件应该是最好的定义组件的方式,并且不会带来额外的模版语法的学习成本。学习

<template>
  <div>
    <ul>
      <li v-for="(item, index) in items" :key="index">{{item}}</li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      items: ["我砍", "我砍", "我砍"]
    };
  }
};
</script>
复制代码

以上就是 Vue 中能够定义组件模版的几种方式,有人可能说,我特么要知道这么多干吗,只要一种不就好了,我想说兄die多知道几种能够帮助咱们在不一样的条件下作出更好的选择。

好比:你就须要开发一个简单的页面,你非要弄个单文件组件,脚手架跑起来,何须呢,你说对不。

相关文章
相关标签/搜索