国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区

當(dāng)前位置:首頁(yè) > 科技  > 軟件

竟然可以在一個(gè)項(xiàng)目中混用 Vue 和 React?

來(lái)源: 責(zé)編: 時(shí)間:2023-09-18 21:42:10 403觀看
導(dǎo)讀VeauryVeaury 是一個(gè)基于 React 和 Vue3 的工具庫(kù),主要用于React和Vue在一個(gè)項(xiàng)目中公共使用的場(chǎng)景,主要運(yùn)用在項(xiàng)目遷移、技術(shù)棧融合的開發(fā)模式、跨技術(shù)棧使用第三方組件的場(chǎng)景。Veaury的特點(diǎn)如下:同時(shí)支持Vue3和React,方

VfV28資訊網(wǎng)——每日最新資訊28at.com

Veaury

Veaury 是一個(gè)基于 React 和 Vue3 的工具庫(kù),主要用于React和Vue在一個(gè)項(xiàng)目中公共使用的場(chǎng)景,主要運(yùn)用在項(xiàng)目遷移、技術(shù)棧融合的開發(fā)模式、跨技術(shù)棧使用第三方組件的場(chǎng)景。VfV28資訊網(wǎng)——每日最新資訊28at.com

Veaury的特點(diǎn)如下:VfV28資訊網(wǎng)——每日最新資訊28at.com

  • 同時(shí)支持Vue3和React,方便在一個(gè)項(xiàng)目中公共使用。
  • 支持同一個(gè)應(yīng)用中出現(xiàn)的vue組件和react組件的context共享。
  • 支持跨框架的hooks調(diào)用,可以在react組件中使用vue的hooks,也可以在vue組件中使用react的hooks。
  • 可以解決React和Vue在公共使用時(shí)的代碼重復(fù)、冗余的問題。
  • 在一個(gè)應(yīng)用中可以隨意使用React或者Vue的第三方組件, 比如 antd, element-ui, vuetify。
  • 提供了詳細(xì)的官方文檔,包括英文版和中文版。

VfV28資訊網(wǎng)——每日最新資訊28at.com

Veaury 的文檔寫的非常詳細(xì),這里就不再詳細(xì)介紹其使用方式了。需要注意的是,Veaury 并不支持 Vue 2,如果需要使用Vue 2,可以使用下面要介紹的工具庫(kù)。VfV28資訊網(wǎng)——每日最新資訊28at.com

Github:https://github.com/devilwjp/veaury。VfV28資訊網(wǎng)——每日最新資訊28at.com

Vuera

Vuera 是一個(gè)用于在 Vue 應(yīng)用中使用 React 組件的庫(kù),同時(shí)也支持在 React 應(yīng)用中使用 Vue 組件。它提供了一種方便的方式,使開發(fā)人員能夠在不同的框架之間無(wú)縫地使用對(duì)方的組件。VfV28資訊網(wǎng)——每日最新資訊28at.com

要在 Vue 應(yīng)用中使用React組件,可以按照以下步驟使用Vuera。VfV28資訊網(wǎng)——每日最新資訊28at.com

安裝插件

安裝Vuera:使用npm或yarn在您的Vue項(xiàng)目中安裝Vuera庫(kù)。VfV28資訊網(wǎng)——每日最新資訊28at.com

// 使用 yarn 安裝yarn add vuera// 使用 npm 安裝npm i -S vuera

安裝依賴。VfV28資訊網(wǎng)——每日最新資訊28at.com

由于需要在Vue中使用React組件,所以首先需要在項(xiàng)目中安裝 React,安裝指令如下:VfV28資訊網(wǎng)——每日最新資訊28at.com

npm install --save react react-dom

項(xiàng)目配置

在babel.config.js文件中添加以下配置即可:VfV28資訊網(wǎng)——每日最新資訊28at.com

{  "presets": [    "react"  ],  "plugins": [    "vuera/babel"  ]}

接下來(lái)在項(xiàng)目中以插件的形式來(lái)引入并使用vuera庫(kù),可以在 main.js 中加入如下代碼:VfV28資訊網(wǎng)——每日最新資訊28at.com

import { VuePlugin } from 'vuera'Vue.use(VuePlugin)

基本使用

完成上述配置之后,就可以在Vue項(xiàng)目中引入并使用React組件了。VfV28資訊網(wǎng)——每日最新資訊28at.com

React組件代碼如下:VfV28資訊網(wǎng)——每日最新資訊28at.com

import React from 'react'function myReactComponent(props) {  const { message } = props  function childClickHandle() {    props.onMyEvent('React子組件傳遞的數(shù)據(jù)')  }  return (    <div>      <h2>{ message }</h2>      <button onClick={ childClickHandle }>向Vue項(xiàng)目傳遞React子組件的數(shù)據(jù)</button>    </div>  )}export default myReactComponent

Vue組件代碼如下:VfV28資訊網(wǎng)——每日最新資訊28at.com

<template>    <div>        <h1>I'm a Vue component</h1>        <my-react-component :message="message" @onMyEvent="parentClickHandle"/>    </div></template><script>    // 引入React組件    import MyReactComponent from './myReactComponent'    export default {        components: {            'my-react-component': MyReactComponent  // 引入React組件        },        data() {            return {                message: 'Hello from React!',            }        },        methods: {            parentClickHandle(data){                console.log(data);            }        },    }</script>

在 Vue 項(xiàng)目中引入了這個(gè) React 組件,效果如下:VfV28資訊網(wǎng)——每日最新資訊28at.com

VfV28資訊網(wǎng)——每日最新資訊28at.com

可以看到,這里實(shí)現(xiàn)了Vue到React組件的傳值,并顯示在了頁(yè)面上。根據(jù)右上角的Chrome插件顯示,這個(gè)項(xiàng)目中既使用了Vue又使用了React。VfV28資訊網(wǎng)——每日最新資訊28at.com

點(diǎn)擊頁(yè)面中的按鈕,可以看到,數(shù)據(jù)從React子組件傳遞到了Vue中:VfV28資訊網(wǎng)——每日最新資訊28at.com

VfV28資訊網(wǎng)——每日最新資訊28at.com

這樣就簡(jiǎn)單實(shí)現(xiàn)了React和Vue組件之間的數(shù)據(jù)通信。VfV28資訊網(wǎng)——每日最新資訊28at.com

其他使用方式

如果不想通過(guò) Babel plugin 的方式引入的話,可以使用以下這兩種方法。VfV28資訊網(wǎng)——每日最新資訊28at.com

(1)使用wrapper組件

<template>  <div>    <react :component="component" :message="message" />  </div></template> <script>  import { ReactWrapper } from 'vuera'  // 引入vuera庫(kù)  import MyReactComponent from './MyReactComponent'  // 引入react組件   export default {    data () {      component: MyReactComponent,      message: 'Hello from React!',    },    components: { react: ReactWrapper }  }</script>

(2)使用高階組件的API

<template>  <div>    <my-react-component :message="message" />  </div></template> <script>  import { ReactWrapper } from 'vuera'  // 引入vuera庫(kù)  import MyReactComponent from './MyReactComponent'  // 引入react組件   export default {    data () {      message: 'Hello from React!',    },    components: { 'my-react-component': ReactInVue(MyReactComponent) }  }</script>

在 React 項(xiàng)目中使用 Vue 組件也是同理,可以參考官方文檔。VfV28資訊網(wǎng)——每日最新資訊28at.com

注意

Vuera 是一個(gè)比較成熟的 JavaScrip 庫(kù),但是目前已經(jīng)不再維護(hù)(最近一次更新是三年前)。并且,該庫(kù)不支持 Vue 3,如果想要支持 Vue 3,可以使用 Vueury。VfV28資訊網(wǎng)——每日最新資訊28at.com

Github:https://github.com/akxcv/vuera。VfV28資訊網(wǎng)——每日最新資訊28at.com

#vuereact-combined

vuereact-combined 是一個(gè)用于 Vue和React快捷集成的工具包,并且適合復(fù)雜的集成場(chǎng)景。通過(guò)這個(gè)工具,可以在任何的Vue和React項(xiàng)目中使用另一個(gè)類型框架的組件,并且解決了復(fù)雜的集成問題。VfV28資訊網(wǎng)——每日最新資訊28at.com

vuera 開辟了Vue和React融合的想法,但是 vuera只能解決非?;A(chǔ)的組件融合,并且存在插槽(children)和數(shù)據(jù)變更后的渲染性能問題,因此無(wú)法用于復(fù)雜的場(chǎng)景以及生產(chǎn)環(huán)境。VfV28資訊網(wǎng)——每日最新資訊28at.com

vuereact-combined 將融合做到了極致,支持了大部分的Vue和React組件的功能,并且在渲染更新上使用了和vuera不同的思路,完美解決了渲染性能問題VfV28資訊網(wǎng)——每日最新資訊28at.com

VfV28資訊網(wǎng)——每日最新資訊28at.com

注意,該項(xiàng)目只支持使用 Vue 2,如果想要使用 Vue 3,可以使用上面的介紹的 Veaury。VfV28資訊網(wǎng)——每日最新資訊28at.com

使用vuereact-combined的步驟如下。VfV28資訊網(wǎng)——每日最新資訊28at.com

#安裝插件

在項(xiàng)目中安裝vuereact-combined:VfV28資訊網(wǎng)——每日最新資訊28at.com

npm install --save vuereact-combined

項(xiàng)目配置

在Vue和React的入口文件中引入 vuereact-combined:VfV28資訊網(wǎng)——每日最新資訊28at.com

import Vue from 'vue';  import React from 'react';  import {Combined} from 'vuereact-combined';    Vue.use(Combined);

配置Babel以支持JSX語(yǔ)法和Vue.js的特性。安裝babel-plugin-transform-vue-jsx和babel-preset-react,并在.babelrc文件中添加相應(yīng)的配置:VfV28資訊網(wǎng)——每日最新資訊28at.com

{    "presets": ["react-app"],    "plugins": ["@vue/babel-plugin-transform-vue-jsx"]  }

在webpack配置文件中添加相應(yīng)的loader和plugin:VfV28資訊網(wǎng)——每日最新資訊28at.com

const VueLoaderPlugin = require('vue-loader/lib/plugin');  module.exports = function(webpackEnv) {    module: {      rules: [        {          test: //.vue$/,          loader: 'vue-loader',        },        {          test: //.js$/,          exclude: /node_modules//(?!(vue|@vue//.*)//).*/,          use: {            loader: 'babel-loader',            options: {              presets: ['@babel/preset-env'],              plugins: ['@babel/plugin-transform-vue-jsx']            }          }        },        // 其他規(guī)則...      ],    },    plugins: [      new VueLoaderPlugin(),      // 其他插件...    ],  };

配置完畢后,就可以在Vue和React之間進(jìn)行快捷的集成了。VfV28資訊網(wǎng)——每日最新資訊28at.com

基本使用

假設(shè)有一個(gè)React組件,它是一個(gè)簡(jiǎn)單的函數(shù)組件:VfV28資訊網(wǎng)——每日最新資訊28at.com

// 來(lái)自React項(xiàng)目的組件const MyReactComponent = () => {  return <div>Hello React!</div>;};

可以在Vue項(xiàng)目中引入并使用這個(gè)組件。下面是一個(gè)使用vuereact-combined的Vue文件示例:VfV28資訊網(wǎng)——每日最新資訊28at.com

<template>  <div>    <MyReactComponent />  </div></template><script>import {Combined} from 'vuereact-combined';import MyReactComponent from './MyReactComponent'; // 引入React組件export default {  components: {    Combined,    MyReactComponent // 將React組件注冊(cè)為Vue組件  },  // 其他Vue代碼...};</script>

這里,首先引入了MyReactComponent,然后在Vue組件中使用它。通過(guò)將React組件注冊(cè)為Vue組件,我們可以在Vue模板中使用它,就像使用普通的Vue組件一樣。VfV28資訊網(wǎng)——每日最新資訊28at.com

這里只展示了最基本的使用方法,其他使用場(chǎng)景可以參考官方文檔。VfV28資訊網(wǎng)——每日最新資訊28at.com

注意事項(xiàng)

  • 在Vue項(xiàng)目中使用第三方的React組件:第三方的react組件已經(jīng)是通過(guò)babel進(jìn)行過(guò)處理,不包含 React 的 jsx。此情況下,可以直接在項(xiàng)目中使用applyReactInVue對(duì)第三方的 React 組件進(jìn)行處理。
  • 在React項(xiàng)目中使用第三方的Vue組件:第三方的Vue組件已經(jīng)是通過(guò)vue-loader和babel進(jìn)行過(guò)處理,不包含.vue文件以及Vue的jsx。此情況下,可以直接在項(xiàng)目中使用applyVueInReact對(duì)第三方的Vue組件進(jìn)行處理。

在 React 項(xiàng)目中引入Vue組件的支持程度:VfV28資訊網(wǎng)——每日最新資訊28at.com

VfV28資訊網(wǎng)——每日最新資訊28at.com

在 Vue 項(xiàng)目中引入 React 組件:
VfV28資訊網(wǎng)——每日最新資訊28at.com

VfV28資訊網(wǎng)——每日最新資訊28at.com

Github:https://github.com/devilwjp/vuereact-combined。VfV28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://m.rrqrq.com/showinfo-26-10482-0.html竟然可以在一個(gè)項(xiàng)目中混用 Vue 和 React?

聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Docker構(gòu)建輕量級(jí)Linux容器

下一篇: 零拷貝并非萬(wàn)能解決方案:重新定義數(shù)據(jù)傳輸?shù)男蕵O限

標(biāo)簽:
  • 熱門焦點(diǎn)
Top 国产精品嫩草99av在线_一区在线视频观看_欧美高清一区_欧美 日韩 国产 一区_99精品欧美一区二区三区_久久大香伊蕉在人线观看热2_一色屋精品视频在线观看网站_在线亚洲国产精品网站_亚洲区一区二区三区_你懂的视频一区二区
国产日韩一级二级三级| 亚洲视频一区| 91免费版在线看| 亚洲小说欧美另类社区| 成人网在线播放| 91久久精品国产91久久性色tv | 日韩精品一区在线观看| 中文字幕高清不卡| 亚洲国产一区二区视频| 亚洲综合精品久久| 久久精品国产精品亚洲红杏| 成人h版在线观看| jiyouzz国产精品久久| 午夜亚洲精品| 日韩精品一区二区在线观看| 中文字幕精品综合| 激情综合网激情| 国产精品v欧美精品v日韩精品 | 国产在线不卡一卡二卡三卡四卡| 不卡大黄网站免费看| 亚洲欧美电影在线观看| 国产亚洲一区二区在线观看| 亚洲成av人片在www色猫咪| 国产精品综合一区二区三区| 成人性生交大片免费看视频在线| 亚洲经典在线| 欧美mv日韩mv国产| 亚洲高清在线视频| 成人免费视频一区| 1000部精品久久久久久久久| 久久久久久国产精品mv| 中文字幕一区二| 国产一区二区三区四区五区入口 | 久久久久国产精品麻豆ai换脸| 亚洲一卡二卡三卡四卡无卡久久 | 在线不卡a资源高清| 亚洲猫色日本管| 国产69精品久久777的优势| 色狠狠综合天天综合综合| 国产香蕉久久精品综合网| 日本伊人午夜精品| 欧美日韩一区二区国产| 在线播放一区二区三区| 亚洲小说欧美激情另类| 国产一区二区三区四区五区入口 | 精品精品欲导航| 韩国av一区二区三区在线观看| 亚洲国产精品一区二区第四页av| 日韩久久精品一区| 国产乱码精品一区二区三| 老鸭窝毛片一区二区三区| 国产欧美日韩麻豆91| 亚洲成人三级小说| 亚洲在线观看| 日韩美女啊v在线免费观看| www.日韩精品| 久久久三级国产网站| 国产麻豆日韩欧美久久| 色狠狠桃花综合| 亚洲精品老司机| 色综合天天在线| 亚洲精品在线免费观看视频| 五月综合激情网| 日本韩国欧美一区二区三区| 亚洲一区在线电影| 一本一本久久| 午夜久久久久久| 国产农村妇女精品一二区| 中文无字幕一区二区三区 | 激情视频一区二区三区| 《视频一区视频二区| 国产精品国产三级欧美二区 | 欧美日本一区二区高清播放视频| 精品久久久久久无| 久久精品国产精品青草| 欧美精品99久久久**| 国产综合成人久久大片91| 欧美午夜精品免费| 欧美极品一区| 欧美丝袜丝交足nylons| 美日韩一区二区| 欧美视频中文一区二区三区在线观看| 午夜伦理一区二区| 在线不卡中文字幕| 本田岬高潮一区二区三区| 精品福利一二区| 欧美xx69| 亚洲一区二区三区影院| 欧美一级专区| 日本成人在线网站| 亚洲主播在线| 国产一区999| 精品国产91亚洲一区二区三区婷婷| 成人黄色777网| 日韩欧美在线123| 激情综合在线| 亚洲线精品一区二区三区八戒| 亚洲在线不卡| 五月婷婷欧美视频| 欧美亚洲尤物久久| 懂色一区二区三区免费观看| 26uuu亚洲| 香港久久久电影| 精品一二三四在线| 亚洲精品一区二区三区99| 久久成人免费网站| 国产精品毛片无遮挡高清| 亚洲精品男同| 久久99国产精品成人| 精品久久久久久久久久久久久久久久久 | 一区在线电影| 国产寡妇亲子伦一区二区| 一区在线播放视频| 欧美日韩国产在线观看| 欧美日韩一视频区二区| 蜜乳av一区二区三区| 国产视频不卡一区| 欧美天堂亚洲电影院在线播放| 欧美va天堂在线| 毛片av一区二区| 中文字幕字幕中文在线中不卡视频| 欧洲一区二区av| 亚洲国产一区二区三区在线播| 精品在线视频一区| 亚洲欧美日韩综合aⅴ视频| 日韩一二三四区| 久久久精彩视频| 欧美日韩成人| 国产成人av一区二区三区在线| 亚洲一区二区三区影院| 久久一夜天堂av一区二区三区| 色老头久久综合| 在线观看日韩av电影| 成人小视频免费观看| 美国十次综合导航| 亚洲在线视频网站| 欧美国产日本视频| 日韩一区二区免费电影| 一本色道久久综合精品竹菊| 在线电影一区| 成人免费视频app| 久久成人免费电影| 午夜国产不卡在线观看视频| 中文字幕在线观看一区二区| 欧美成人aa大片| 欧美一区二区视频在线观看2020 | 99久久久久久99| 国产精品一区二区不卡| 看片的网站亚洲| 日本怡春院一区二区| 亚洲福中文字幕伊人影院| 亚洲美女视频在线观看| 中文欧美字幕免费| 久久亚洲私人国产精品va媚药| 欧美一个色资源| 555夜色666亚洲国产免| 欧美日韩亚洲另类| 在线观看国产日韩| 老妇喷水一区二区三区| 麻豆精品网站| 麻豆精品网站| 久久在线视频| 久久亚洲风情| 色婷婷综合久久久| 久久精品伊人| 久久亚洲综合网| 一本色道久久综合狠狠躁的推荐| 鲁大师影院一区二区三区| 国产日韩免费| 国产精品乱子乱xxxx| 亚洲欧美精品| 日本韩国一区二区三区视频| 久久综合伊人| 欧美午夜精品久久久| 欧美日韩亚洲国产综合| 6080日韩午夜伦伦午夜伦| 日韩欧美电影在线| 久久精品一区四区| 国产欧美一区二区精品性| 中文天堂在线一区| 一区二区三区在线免费| 亚洲第一福利视频在线| 免费在线观看精品| 国产精品白丝av| 91免费国产视频网站| 一区二区在线不卡| 免费亚洲视频| 欧美人妖巨大在线| 久久综合五月天婷婷伊人| 久久久久久久久久电影| 欧美激情艳妇裸体舞| 亚洲精品一二三| 日韩不卡手机在线v区| 黄一区二区三区| 97精品久久久久中文字幕| 国产一区二区三区四区老人| 国产精品久久久久久久久久直播| 一本久道中文字幕精品亚洲嫩| 欧美精品在线观看播放| 国产亚洲污的网站|