博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue template To JSX
阅读量:6324 次
发布时间:2019-06-22

本文共 1923 字,大约阅读时间需要 6 分钟。

  • Vue 模板语法

    模板语法贴近 HTML,也是 Vue 官方推荐的写法,用起来很方便,但是也有不足的地方,因为是 html,linting、类型检查、编辑器的自动完成,这些基本都没有

  • 渲染函数

    这个我没有实际用过,不是很清楚利和弊,如果是用函数返回一个简单 VNode 的话,用这个也可以的

  • JSX

    你可以使用完整的编程语言 JavaScript 功能来构建你的视图页面。比如你可以使用临时变量、JS 自带的流程控制、以及直接引用当前 JS 作用域中的值等等。 开发工具对 JSX 的支持相比于现有可用的其他 Vue 模板还是比较先进的 (比如,linting、类型检查、编辑器的自动完成)。并且从使用上来说,JSX 应该是比渲染函数要好一些的,如果是从 Vue 模板迁移过来,也很方便。

Vue 模板转 JSX

Vue-cli 默认生成的项目里面默认就带有babel-plugin-transform-vue-jsx,所以直接写 jsx 就是了不用担心编译问题,但是还是建议多装一个babel-plugin-jsx-v-model,这个的作用是在 jsx 中使用 v-model,如果没有这个,你要自己手动实现双向绑定。

单文件组件,如果原本是模板想转 JSX 的话,比较简单,把模板复制,然后在 Vue 实例中,写一个 render(){},把代码复制进去就好了,然后你就会看到编辑器一片红。然后就把 vue 模板的语法改成 jsx 语法。变化的基本不大,变化比较大的,应该就是 v-for 和 v-if 了

  • v-bind

    // v-bind tmpl    // v-bind jsx  复制代码
  • v-if

    // v-if tmpl  1  2  // v-if jsx  // 如果复杂一点的话,还是单独写一个函数吧  {item == 1 ? 1 : 2}复制代码
  • v-for

    // v-for tmpl  
    • {
      {item}}
    // v-for jsx // 还是那句话,如果比较复杂的还是单独写一个函数
      {arr.map(item =>
    • {item}
    • )}
    复制代码
  • v-show 和 v-model

    // v-show jsx支持v-show,所以这个不用改变  // v-model,jsx默认不支持,可以引入babel-plugin-jsx-v-model复制代码
  • 绑定事件

    // 绑定事件 tmpl    // 绑定事件 jsx  // on-click和onCLick都可以    复制代码
  • 绑定原生事件

    // 绑定原生事件 native  
    // 目前只能用驼峰式,至少我用native-on-click编译不过复制代码
  • 关于 jsx v-for 的$refs

    // 关于jsx v-for只能获得一个引用对象  
      {arr.map(item =>
      )}
    /* 上面这种写法,this.$refs.my获取的只是一个对象,一般是数组最后一项的组件对象,但是实际上,我们要的是ref的数组 */ /* 如果要获取里面,所有的ref,也就是要获取一个数组的话,必须加上refInFor,看下面,同样的,不能写成ref-in-for */
      {arr.map(item =>
      )}
    // 当然,如果你有想法,每次循环项的ref都不同的话,也不是不行,看你自己的需求了,模板也可以这么玩复制代码

看到这个相比你也知道 vue 的 JSX 其实和 react 的 JSX 很像,不过它们还是有点区别

  • react 属性只能用驼峰式,在 vue 你可以使用驼峰式,同时还能使用 kebab-case,事件也是同理,但是某些特定的暂时只能用驼峰式(例如 refInFor 等等)

  • react 的 class 要写成 className,在 vue 直接用 class,写 className 会出错

  • react 的 style 只支持引入对象,vue 除了能引入对象,还能用 html 的写法,简单粗暴

最后丢两个个链接就跑

这是Vue官方给的一些JSX的教程

转载于:https://juejin.im/post/5be4520951882531b81ad29a

你可能感兴趣的文章
linux系统性能分析
查看>>
SystemTap----将SystemTap脚本编译成内核模块
查看>>
KVM虚拟机介绍
查看>>
构建ASP.NET MVC4+EF5+EasyUI+Unity2.x注入的后台管理系统(7)-MVC与EasyUI DataGrid
查看>>
Redis系列(六)-SortedSets设计技巧
查看>>
Latex技巧
查看>>
Android开发日记(一)
查看>>
java中简单字符替换
查看>>
【推荐】【给中高级开发者】构建高性能ASP.NET应用的几点建议
查看>>
ale.js 1.2.1 发布,以组件形式构建用户界面
查看>>
移动端web app自适应布局探索与总结
查看>>
前端开发中的正则表达式验证
查看>>
阿里巴巴微服务开源项目盘点(持续更新)
查看>>
中国工程院院士衣宝廉:预计国内明年将有100台加氢站运行 |电动车百人会2019 ...
查看>>
区块链溯源是什么?一文带您读懂!
查看>>
为什么很多人开始反对996了?
查看>>
一文说透WordPress的自定义文章类型
查看>>
Go并发编程之美-条件变量
查看>>
k8s与CICD--一个完整的drone demo
查看>>
Redis指令与数据结构(二)
查看>>