Vue 中可以定义组件模版的几种方式


Posted in Javascript onAugust 06, 2019

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

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

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

字符串形式

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

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

模版字面量

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

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

内联模版(inline-template)

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

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

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"
 }
 }
})

渲染函数

渲染函数需要 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 <div>{this.label}</div>
 }
})

单文件组件

使用构建工具 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多知道几种可以帮助我们在不同的条件下做出更好的选择。

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

总结

以上所述是小编给大家介绍的Vue 中可以定义组件模版的几种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
jQuery实现的Email中的收件人效果(按del键删除)
Mar 20 Javascript
Jquery css函数用法(判断标签是否拥有某属性)
May 28 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
微信小程序通过api接口将json数据展现到小程序示例
Jan 20 Javascript
three.js绘制地球、飞机与轨迹的效果示例
Feb 28 Javascript
angularJS实现动态添加,删除div方法
Feb 27 Javascript
如何使用vuex实现兄弟组件通信
Nov 02 Javascript
Node.js实现简单管理系统
Sep 23 Javascript
Vue实现PC端靠边悬浮球的代码
May 09 Javascript
prettier自动格式化去换行的实现代码
Aug 25 Javascript
JavaScript手写数组的常用函数总结
Nov 22 Javascript
angularjs请求数据的方法示例
Aug 06 #Javascript
通过js示例讲解时间复杂度与空间复杂度
Aug 06 #Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 #Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 #Javascript
VUE组件中的 Drawer 抽屉实现代码
Aug 06 #Javascript
浅入深出Vue之自动化路由
Aug 06 #Javascript
解决vue单页面修改样式无法覆盖问题
Aug 05 #Javascript
You might like
投票管理程序
2006/10/09 PHP
php实现的简单日志写入函数
2015/03/31 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
php数组生成html下拉列表的方法
2015/07/20 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
2016/03/31 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
Google AJAX 搜索 API实现代码
2010/11/17 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
javascript算法学习(直接插入排序)
2011/04/12 Javascript
jQuery插件zTree实现清空选中第一个节点所有子节点的方法
2017/03/08 Javascript
Bootstrap Table使用整理(三)
2017/06/09 Javascript
mui上拉加载更多下拉刷新数据的封装过程
2017/11/03 Javascript
vue-router重定向不刷新问题的解决
2018/06/25 Javascript
学习python (1)
2006/10/31 Python
跟老齐学Python之print详解
2014/09/28 Python
Python操作mongodb的9个步骤
2018/06/04 Python
基于数据归一化以及Python实现方式
2018/07/11 Python
python+splinter自动刷新抢票功能
2018/09/25 Python
Python3 实现串口两进程同时读写
2019/06/12 Python
python解析xml简单示例
2019/06/21 Python
python绘制已知点的坐标的直线实例
2019/07/04 Python
django重新生成数据库中的某张表方法
2019/08/28 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
解释i节点在文件系统中的作用
2013/11/26 面试题
播音主持女孩的自我评价分享
2013/11/20 职场文书
集团公司党的群众路线教育实践活动工作总结
2014/03/03 职场文书
法人授权委托书范本
2014/04/04 职场文书
小学德育工作经验交流材料
2014/05/22 职场文书
2014党员批评和自我批评思想汇报
2014/09/21 职场文书
先进个人材料怎么写
2014/12/30 职场文书
家长反馈意见及建议
2015/06/03 职场文书
钢琴师观后感
2015/06/12 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis