当前位置: 首页 > Web前端 > vue.js

如何在Vue项目中使用JSX?

时间:2023-03-31 19:32:01 vue.js

作者:ManStruggling什么是JSX?JSX是JavaScript和XML的组合,即JavaScript+XML=JSX。JSX起源于Facebook,XML可以用JavaScript编写。由于这个特性,它具有JavaScript的灵活性以及语义和直观性为什么要使用JSX?jsx比createElement函数更具可读性;

VSthis.$createElement('div',{...},[...])vue-cli3.0及以上默认支持jsx语法jsx可以让Vue组件更容易导入和管理。首先横向比较一下模板语法、createElement函数、jsx三种渲染方式。栗子-template模板语法用得最多,不解释

spantextbtag
createElementcreateElement函数实际上是创建一个VirtualNode,创建一个VNode树。Dom树一旦结构复杂,dom节点属性过多,势必造成可读性差。..render(h){returnh("div",{attrs:{id:"vnode",},},["sometext",h("p",{class:{bar:true,},style:{color:"red",fontWeight:"bold",},},"只有你能阻止森林火灾"),h("span",{},"spantext"),h("b",{domProps:{innerText:"b标签"}}),]);}JSX然后jsx闪耀render(){return(sometext只有你能阻止森林大火

跨度文本b标签
);}可能的同学感觉这和模板没什么区别。本案例只涉及html,不涉及javascript。jsx是把javascript和html放在一起写的。所以看下栗子。栗子2根据type的值进行条件渲染。有A、B、C三个模块,每个模块对应模块都有自己的代码,也有一些通用的模块。假设这些代码有很多行,势必会导致可读性下降。可能有人会想,如果是这样的话,不如把公共代码分离成一个单独的组件,这样就可以解决问题了。如果这里的公开代码只在本文件中使用,其他文件不会影响这些公开代码。对于代码引用,是否要考虑提取公共组件的必要性?jsx可以完美解决这些问题。模板,在模板
...模块A的代码
...公共代码
...模块B的代码
...通用代码
...模块C的代码
...公共代码
createElement这里没有对createElement函数的描述,估计是没有多少人使用这个。...这样的话,JSX模板模板代码超过300行就看不懂,会在VM层和V层反复切换。因此,在复杂的大型项目中推荐使用jsx进行渲染,以提高代码的可读性。Propertyrender(){//提取公共模块代码constrenderCommon=()=>
...公共代码
;constrenderA=()=>(
...模块A代码
{renderCommon()});constrenderB=()=>(
...模块B
{renderCommon()});constrenderC=()=>(
...模块C的代码
{renderCommon()});return(
{this.type===0?renderA():this.type===1?renderB():renderC()}
);}Usage插槽和作用域插槽//child.vue组件直接导入使用,无需组件注册,方便使用jsx、条件渲染、v-html、列表渲染、事件绑定、属性绑定导入管理上述总结的一些特例,instructions,slots和scopeslots的使用,你肯定可以看到,使用jsx可以像vue3的compositionAPI一样,将相同逻辑的代码聚合在一起,避免了开发大型项目时,页面逻辑复杂导致量的增加代码,优化关于API上模板和方法来回切换的问题,我是第一次写文章。如果您有任何问题,欢迎您指正。希望大家可以STAR支持小编。希望小编的内容能对大家有所帮助~[TOC]