栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Vue.js

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

Vue.js 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

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

当然因为现在的系统越来越复杂庞大,所以开发与维护成本就变得必须要考虑的问题,因此滋生出了目前的三大前端框架 Vue、Angular、React。

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

字符串形式

Vue 最简单直接的一种定义组件模版的方式,但是方式写起来很不友好,就像我们以前拼接 HTML 元素是一样的,很痛苦,所以我们并不常用

Vue.component("my-button", {
  data: function () {
    return {
      label: "是兄弟就来砍我"
    }
  },
  template: ""
});
模版字面量

模版字面量 ES6 语法,与字符串不同的是,我们可以进行多行书写,相对单纯字符串有很大优势,体验更优,但是可能浏览器兼容性会存在问题,需要进行转译为 ES5 语法。

Vue.component("my-content", {
  data: function () {
    return {
      label: "是兄弟就来砍我",
      content: "刀刀暴击"
    }
  },
  template: `
    
      
      {{ content }}
    
  `
});
内联模版(inline-template)

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


  {{label}}

Vue.component('my-label', {
  data: function () {
    return {
      label: "赶紧上车吧,兄die"
    }
  }
})
X-template

定义一个 Vue.component('my-label', { template: "#label-template", data: function () { return { label: "赶紧上车吧,兄die" } } }) 渲染函数

渲染函数需要 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', '活动结束')
    }
  }
})
JSX

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

Vue.component('my-label', {
  data: function () {
    return {
      label: ["活动结束"]
    }
  },
  render(){
    return {this.label}
  }
})
单文件组件

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



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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/240852.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号