JSX就是Javascript和XML结合的一种格式。react发明了JSX,利用html语法来创建虚拟dom。当遇到<,JSX就当HTML解析,遇到{就当JavaScript解析.
最开始是因为近期在学习react,在里面体验了一把jsx语法,发现也并没有别人说的很难受的感觉啊,于是就想尝试在vue中也试下,Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML。然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,就需要使用 render 函数,它比 template 更接近编译器。
最终页面显示效果为
<div class="open-service" style="color: #0199f0; cursor: pointer;"> hello <p>world</p> </div>
主页面
parent.vue
<template>
<div class="hello">
<vue-test :typeSpan="typeSpan"></vue-test>
</div>
</template>
<script type="text/jsx">
import VueTest from "./jsx/VueTest";
export default {
name: 'HelloWorld',
components:{
VueTest,
},
computed:{
typeSpan(){
return {
text:'hello',
attrs:{
class:"open-service",
style:'color:#0199f0;cursor:pointer'
},
}
}
},
}
</script>
子页面child.vue有两种方法
第一种
<script type="text/jsx">
export default {
props: {
typeSpan:{
type:Object,
default:{}
}
},
created(){
},
methods:{
openContactService(){
alert(1)
},
},
render(createElement) {
return(
<div
class={this.typeSpan.attrs.class}
style={this.typeSpan.attrs.style}
onClick={this.openContactService}>
{this.typeSpan.text}
<p >world</p>
</div>
)
}
}
</script>
第二种
<script type="text/jsx">
export default {
props:{
typeSpan:{
type:Object,
default:{}
}
},
methods:{
openContactService(){
alert(1)
}
},
render(createElement, context) {
return createElement(
'div',{
class:this.typeSpan.attrs.class,
style:this.typeSpan.attrs.style,
on:{
click:this.openContactService
}
},[
this.typeSpan.text,
createElement('p','world'),
]
)
}
}
</script>
Vue 2.0中的render中使用JSX,由于Vue框架并没有特意地去支持JSX,Vue和JSX为什么能配合在一起使用呢? 很简单, 因为Vue支持虚拟DOM, 你可以用JSX或者其他预处理语言,只要能保证render方法正常工作即可。
JSX就是Javascript和XML结合的一种格式,利用HTML语法来创建虚拟DOM。将XML语法直接加入JS中,通过代码而非模板来高效的定义界面。之后JSX通过翻译器转换为纯JS再由浏览器执行。
本文会先解释一下JSX的工作原理,再介绍一下如何用不寻常的方式来使用JSX。
最近选用的框架iview表单组件的render写法让人有点不习惯,尤其是在写比较复杂的逻辑的时候,还是感觉模 板式的写法比较方便且可读性较强。而render函数除了支持配置写法外,还支持jsx的写法。由于之前有用过react,因此对jsx并不陌生,可以直接上手。
react中基本都使用JSX来开发,但JSX其实是javascript的一种语法糖。语法糖就是提供了一种全新的方式书写代码,但是其实现原理与之前的写法相同。
脚手架工具:选用React官方推荐的脚手架工具create-react-app,安装npm install create-react-app -g。项目初始化步骤:
不仅仅是在React(或受JSX启发模板),对于在各种框架中进行模板化,JSX是如今一个非常受欢迎的选择。然而,如果你不喜欢使用JSX,或者你的项目想避免使用它,又或者只是受好奇心驱使
JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式。JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能。Babel 会把 JSX 转译成一个名为 React.createElement() 函数调用。
这被称为 JSX,是一个 JavaScript 的语法扩展。建议在 React 中配合使用 JSX,JSX 可以生成 React “元素”,而且JSX 可以很好地描述 UI 应该呈现出它应有交互的本质形式。JSX 可能会使人联想到模版语言,但它具有 JavaScript 的全部功能。
Vue.js 具有简单的 API 和几个选项,可用于在我们的组件中定义HTML模板。我们可以使用<template>标签选项,在根组件实例上定义template属性,或者使用单文件组件。上面的选项很棒并且可以完美地工作
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!