Vue入门指北——渲染函数和jsx

简介: Vue入门指北——渲染函数和jsx

前言


在进行vue的开发时,我们往往会遵从vue的规范,在template标签中编写html,在script标签中编写JavaScript,在style标签中编写css。但在有些情况下,尽管这种方式也可以实现我们想要的效果,但是可能编写的时候会比较麻烦,需要很多的判断,但是,如果他能和JavaScript联动起来,我想它肯定会变得更加高效。


渲染函数


比如我们有一个title组件:


// title.vue
<h1>彼时彼刻,恰如此时此刻</h1>
复制代码


在父组件引用:


// page.vue
<title level="1"></title>
<title level="2"></title>
<title level="3"></title>
复制代码


title组件根据传来的level prop动态改变,h标签。你可能想到这么实现:


title.vue
...
<h1 v-if="level === 1">彼时彼刻,恰如此时此刻<slot><slot></h1>
<h2 v-if="level === 2">彼时彼刻,恰如此时此刻<slot><slot></h2>
<h3 v-if="level === 3">彼时彼刻,恰如此时此刻<slot><slot></h3>
...
...
props: {
    level: {
        type: Number,
        required: true
    }
}
...
复制代码


尽管这么写,实现我们想要的效果,但是每次写的时候,h都要再写一遍。如果是业务繁杂的话,结构将会更加复杂。


而这种情况,我们完全可以根据vue提供的render方法来解决。


// title.vue
render(createElement) {
    return createElement(
        'h' + this.level, 
        彼时彼刻,恰如此时此刻
    )
},
props: {
    level: {
        type: Number,
        required: true
    }
}
复制代码


这样看起来,是不是就方便多了。


jsx


当然,通过render回调的 createElement参数来编写可以解决我们的问题。但是如果结构复杂的话,这么写可以说是非常折磨的,而如果也能通过html的形式写的话,那是再好不过的。正好jsx就可以解决我们的问题:


JSX:是一个 JavaScript 的语法扩展。可以在JavaScript中编写html,具有 JavaScript 的全部功能。


具体特性,请参考文档。


安装


npm install @vue/babel-preset-jsx @vue/babel-helper-vue-jsx-merge-props
复制代码


// babel.config.js
module.exports = {
  presets: ['@vue/babel-preset-jsx'],
}
复制代码


有了jsx,我们就可以这样实现:


// title.vue
render(createElement) {
    const tag = `h${this.props.level}`
    return (
        <tag>
            彼时彼刻,恰如此时此刻
        </tag>
    )
},
props: {
    level: {
        type: Number,
        required: true
    }
}


相关文章
|
25天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
127 1
|
4天前
|
JavaScript 安全 API
iframe嵌入页面实现免登录思路(以vue为例)
通过上述步骤,可以在Vue.js项目中通过 `iframe`实现不同应用间的免登录功能。利用Token传递和消息传递机制,可以确保安全、高效地在主应用和子应用间共享登录状态。这种方法在实际项目中具有广泛的应用前景,能够显著提升用户体验。
30 8
|
5天前
|
存储 设计模式 JavaScript
Vue 组件化开发:构建高质量应用的核心
本文深入探讨了 Vue.js 组件化开发的核心概念与最佳实践。
31 1
|
1月前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
2月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能
|
2月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
59 1
vue学习第一章
|
2月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
55 1
|
2月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
47 1
vue学习第四章