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-ifv-for指令就可以用JavaScript语法轻松实现。
Vue.component('my-label',{ data:function(){ return{ items:['来就送!','来就送!','来就送!'] } }, render:function(createElement){ if(this.items.length){ returncreateElement('ul',this.items.map(function(item){ returncreateElement('li',item) })) }else{ returncreateElement('p','活动结束') } } })
JSX
相比渲染函数的抽象而言,JSX比较容易一些,对于熟悉React的同学是比较友好的。
Vue.component('my-label',{ data:function(){ return{ label:["活动结束"] } }, render(){ return{this.label}} })
单文件组件
使用构建工具cli创建项目,综合来看单文件组件应该是最好的定义组件的方式,而且不会带来额外的模版语法的学习成本。
{{item}}
以上就是Vue中可以定义组件模版的几种方式,有人可能说,我特么要知道这么多干嘛,只要一种不就行了,我想说兄die多知道几种可以帮助我们在不同的条件下做出更好的选择。
比如:你就需要开发一个简单的页面,你非要弄个单文件组件,脚手架跑起来,何必呢,你说对不。
总结
以上所述是小编给大家介绍的Vue中可以定义组件模版的几种方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!