vue代码和react代码互转(组件库同步)

vue代码和react代码互转(组件库同步)

背景

有些需要vue和react代码互转的场景

  • 比如:组件库之间,相同功能的组件,在vue组件库和react组件库中同步一遍。或者一些模板代码,需要多个版本

手动去同步,数量多了后 还是挺烦的。后面发现有工具可以转换!! 此篇主要介绍一些转换工具(得注意一下 优缺点和注意点,下面会列出来

以下主要介绍这3种场景:(基本都有开源的工具,可以直接使用)

  1. vue转react
  2. react转vue
  3. vue2转vue3

1. vue转react

github.com/mcuking/vue…

image.png

优点:

  1. 多多少少还是可以节省不少时间的

缺点:

  1. 因为开源库是几年前的,所以较新的api,是不支持的。比如hooks,函数式组件
  2. 可能会转换出一些过于老的,或废弃的api,需要开发者自己手动调整一下

注意:

  • 如果转换失败,注意看报错
  • 实在看不明白报错的话,就把源代码一部分一部分注释掉,最终定位到错误位置。在看看修改一下,还是手动copy一下
  • tips:props处经常有问题(导致报错转换失败),还有一些vue独有的api,转换后需要开发者自己去处理,比如$emit(这个不会导致转换失败)

2. react转vue

github.com/vicwang163/…

转换前

import React, { Component } from 'react'

class App extends Component {
  constructor() {
    super();
    this.state = {
      hello: 'world'
    }
  }
  componentDidMount () {
    console.log(this.state)
  }
  myMethod () {
    this.setState({ hello: 'world' })
  }
  render() {
    return (
      <div className="App">
        <div className="App-header" onClick={this.myMethod}>
          <h2>
            Hello {this.state.hello}
          </h2>
        </div>
        <p className="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    )
  }
}
export default App
复制代码

转换后

// export component
export default {
  name: 'app',
  data () {
    return {hello: 'world'}
  },
  methods: {
    myMethod () {
      this.hello = 'world'
    }
  },
  mounted () {
    console.log(this)
  },
  render () {
    return (
      <div class="App">
        <div class="App-header" onClick={this.myMethod}>
          <h2>Hello {this.hello}</h2>
        </div>
        <p class="App-intro">
          To get started, edit <code>src/App.js</code> and save to reload.
        </p>
      </div>
    )
  }
}
复制代码

优点(同上):

  1. 多多少少还是可以节省不少时间的

缺点:

  1. 因为开源库是几年前的,所以只支持偏旧版本的react和类组件。较新的api是不支持的。比如hooks,函数式组件
  2. 转换出来的vue是jsx语法版本的,项目内需要配置支持jsx语法

注意:

  • 如果转换失败,注意看报错
  • 实在看不明白报错的话,就把源代码一部分一部分注释掉,最终定位到错误位置。在看看修改一下,还是手动copy一下
  • tips:只支持偏旧版本的react和类组件。较新的api是不支持的

3. vue2转vue3

用gogocode: gogocode.io/zh/docs/vue…

  • 文档非常详细,有兴趣可以点进去看看

总结

vue和react代码互转,有现成的开源工具,但是工具是3,4年前开发的

  • 目前vue和react都更新迭代了一些版本,导致工具可能处理不了较新的代码和api。 还有一些是2个框架的语法差异,能成功转换,但需要开发者手动处理

但整体来说

优点:

  1. 多多少少还是可以节省不少时间的,但要注意使用条件

缺点:

  1. 在此文章的上面每一项内都有标注缺点,有兴趣可以拉上去看看。主要是适用范围的缺点

注意点:

  • 如果转换失败,注意看报错 (文章的上面每一项内都有标注 注意点,可以细看看)

后续有空来写一篇解释一下代码转换的原理。思路是用 code -> ast -> 处理得到新的ast -> 新code

码字不易,点赞鼓励!!

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享