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 相关文章推荐
一些javascript一些题目的解析
Dec 25 Javascript
JQuery for与each性能比较分析
May 14 Javascript
javascript 兼容各个浏览器的事件
Feb 04 Javascript
js滚动条平滑移动示例代码
Mar 29 Javascript
Node.js的Koa框架上手及MySQL操作指南
Jun 13 Javascript
Angularjs上传图片实例详解
Aug 06 Javascript
详解JS模块导入导出
Dec 20 Javascript
vue 2.0 购物车小球抛物线的示例代码
Feb 01 Javascript
在vue中使用jointjs的方法
Mar 24 Javascript
微信小程序按钮点击动画效果的实现
Sep 04 Javascript
使用Typescript和ES模块发布Node模块的方法
May 25 Javascript
React中使用Vditor自定义图片详解
Dec 25 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
如何使用PHP获取网络上文件
2006/10/09 PHP
PHP个人网站架设连环讲(三)
2006/10/09 PHP
php 进度条实现代码
2009/03/10 PHP
一款简单实用的php操作mysql数据库类
2014/12/08 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
List Installed Software Features
2007/06/11 Javascript
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
asp.net HttpHandler实现图片防盗链
2009/11/09 Javascript
浅谈jQuery this和$(this)的区别及获取$(this)子元素对象的方法
2016/11/29 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
2017/01/09 Javascript
使用canvas进行图像编辑的实例
2017/08/29 Javascript
解决html-jquery/js引用外部图片时遇到看不了或出现403的问题
2017/09/22 jQuery
浅析node Async异步处理模块用例分析及常用方法介绍
2017/11/17 Javascript
微信小程序自定义toast弹窗效果的实现代码
2018/11/15 Javascript
H5实现手机拍照和选择上传功能
2019/12/18 Javascript
vue中的使用token的方法示例
2020/03/10 Javascript
vue elementui tree 任意级别拖拽功能代码
2020/08/31 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
python实现的登录和操作开心网脚本分享
2014/07/09 Python
python代码制作configure文件示例
2014/07/28 Python
python打开网页和暂停实例
2014/09/30 Python
Python的Tornado框架异步编程入门实例
2015/04/24 Python
简单了解python模块概念
2018/01/11 Python
python 获取当天每个准点时间戳的实例
2018/05/22 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
Python调用C语言程序方法解析
2020/07/07 Python
python如何代码集体右移
2020/07/20 Python
html5的pushstate以及监听浏览器返回事件的实现
2020/08/11 HTML / CSS
检举信的格式及范文
2014/04/04 职场文书
校园文明倡议书
2014/05/16 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
妇女工作先进事迹
2014/08/17 职场文书
社区党员公开承诺书
2014/08/30 职场文书
2015年国庆节广播稿
2015/08/19 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
利用js实现简单开关灯代码
2021/11/23 Javascript