日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

竟然可以在一個項目中混用 Vue 和 React?

來源: 責編: 時間:2023-09-18 21:42:10 331觀看
導讀VeauryVeaury 是一個基于 React 和 Vue3 的工具庫,主要用于React和Vue在一個項目中公共使用的場景,主要運用在項目遷移、技術棧融合的開發模式、跨技術棧使用第三方組件的場景。Veaury的特點如下:同時支持Vue3和React,方

3TO28資訊網——每日最新資訊28at.com

Veaury

Veaury 是一個基于 React 和 Vue3 的工具庫,主要用于React和Vue在一個項目中公共使用的場景,主要運用在項目遷移、技術棧融合的開發模式、跨技術棧使用第三方組件的場景。3TO28資訊網——每日最新資訊28at.com

Veaury的特點如下:3TO28資訊網——每日最新資訊28at.com

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

3TO28資訊網——每日最新資訊28at.com

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

Github:https://github.com/devilwjp/veaury。3TO28資訊網——每日最新資訊28at.com

Vuera

Vuera 是一個用于在 Vue 應用中使用 React 組件的庫,同時也支持在 React 應用中使用 Vue 組件。它提供了一種方便的方式,使開發人員能夠在不同的框架之間無縫地使用對方的組件。3TO28資訊網——每日最新資訊28at.com

要在 Vue 應用中使用React組件,可以按照以下步驟使用Vuera。3TO28資訊網——每日最新資訊28at.com

安裝插件

安裝Vuera:使用npm或yarn在您的Vue項目中安裝Vuera庫。3TO28資訊網——每日最新資訊28at.com

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

安裝依賴。3TO28資訊網——每日最新資訊28at.com

由于需要在Vue中使用React組件,所以首先需要在項目中安裝 React,安裝指令如下:3TO28資訊網——每日最新資訊28at.com

npm install --save react react-dom

項目配置

在babel.config.js文件中添加以下配置即可:3TO28資訊網——每日最新資訊28at.com

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

接下來在項目中以插件的形式來引入并使用vuera庫,可以在 main.js 中加入如下代碼:3TO28資訊網——每日最新資訊28at.com

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

基本使用

完成上述配置之后,就可以在Vue項目中引入并使用React組件了。3TO28資訊網——每日最新資訊28at.com

React組件代碼如下:3TO28資訊網——每日最新資訊28at.com

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

Vue組件代碼如下:3TO28資訊網——每日最新資訊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 項目中引入了這個 React 組件,效果如下:3TO28資訊網——每日最新資訊28at.com

3TO28資訊網——每日最新資訊28at.com

可以看到,這里實現了Vue到React組件的傳值,并顯示在了頁面上。根據右上角的Chrome插件顯示,這個項目中既使用了Vue又使用了React。3TO28資訊網——每日最新資訊28at.com

點擊頁面中的按鈕,可以看到,數據從React子組件傳遞到了Vue中:3TO28資訊網——每日最新資訊28at.com

3TO28資訊網——每日最新資訊28at.com

這樣就簡單實現了React和Vue組件之間的數據通信。3TO28資訊網——每日最新資訊28at.com

其他使用方式

如果不想通過 Babel plugin 的方式引入的話,可以使用以下這兩種方法。3TO28資訊網——每日最新資訊28at.com

(1)使用wrapper組件

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

在 React 項目中使用 Vue 組件也是同理,可以參考官方文檔。3TO28資訊網——每日最新資訊28at.com

注意

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

Github:https://github.com/akxcv/vuera。3TO28資訊網——每日最新資訊28at.com

#vuereact-combined

vuereact-combined 是一個用于 Vue和React快捷集成的工具包,并且適合復雜的集成場景。通過這個工具,可以在任何的Vue和React項目中使用另一個類型框架的組件,并且解決了復雜的集成問題。3TO28資訊網——每日最新資訊28at.com

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

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

3TO28資訊網——每日最新資訊28at.com

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

使用vuereact-combined的步驟如下。3TO28資訊網——每日最新資訊28at.com

#安裝插件

在項目中安裝vuereact-combined:3TO28資訊網——每日最新資訊28at.com

npm install --save vuereact-combined

項目配置

在Vue和React的入口文件中引入 vuereact-combined:3TO28資訊網——每日最新資訊28at.com

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

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

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

在webpack配置文件中添加相應的loader和plugin:3TO28資訊網——每日最新資訊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']            }          }        },        // 其他規則...      ],    },    plugins: [      new VueLoaderPlugin(),      // 其他插件...    ],  };

配置完畢后,就可以在Vue和React之間進行快捷的集成了。3TO28資訊網——每日最新資訊28at.com

基本使用

假設有一個React組件,它是一個簡單的函數組件:3TO28資訊網——每日最新資訊28at.com

// 來自React項目的組件const MyReactComponent = () => {  return <div>Hello React!</div>;};

可以在Vue項目中引入并使用這個組件。下面是一個使用vuereact-combined的Vue文件示例:3TO28資訊網——每日最新資訊28at.com

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

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

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

注意事項

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

在 React 項目中引入Vue組件的支持程度:3TO28資訊網——每日最新資訊28at.com

3TO28資訊網——每日最新資訊28at.com

在 Vue 項目中引入 React 組件:
3TO28資訊網——每日最新資訊28at.com

3TO28資訊網——每日最新資訊28at.com

Github:https://github.com/devilwjp/vuereact-combined。3TO28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-10482-0.html竟然可以在一個項目中混用 Vue 和 React?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 使用Docker構建輕量級Linux容器

下一篇: 零拷貝并非萬能解決方案:重新定義數據傳輸的效率極限

標簽:
  • 熱門焦點
  • K60 Pro官方停產 第三方瞬間漲價

    雖然沒有官方宣布,但Redmi的一些高管也已經透露了,Redmi K60 Pro已經停產且不會補貨,這一切都是為了即將到來的K60 Ultra鋪路,屬于廠家的正常操作。但有意思的是該機在停產之后
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • 一篇文章帶你了解 CSS 屬性選擇器

    屬性選擇器對帶有指定屬性的 HTML 元素設置樣式。可以為擁有指定屬性的 HTML 元素設置樣式,而不僅限于 class 和 id 屬性。一、了解屬性選擇器CSS屬性選擇器提供了一種簡單而
  • JVM優化:實戰OutOfMemoryError異常

    一、Java堆溢出堆內存中主要存放對象、數組等,只要不斷地創建這些對象,并且保證 GC Roots 到對象之間有可達路徑來避免垃 圾收集回收機制清除這些對象,當這些對象所占空間超過
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 本地生活這塊肥肉,拼多多也想吃一口

    出品/壹覽商業 作者/李彥編輯/木魚拼多多也看上本地生活這塊蛋糕了。近期,拼多多在App首頁&ldquo;充值中心&rdquo;入口上線了本機生活界面。壹覽商業發現,該界面目前主要
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • 小米MIX Fold 3下月亮相:今年唯一無短板的全能折疊屏

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都有新的進展,其中榮耀、三星都已陸續發布了最新的折疊屏旗艦,尤其號榮耀Magi
  • iQOO Neo8系列今日官宣:首發天璣9200+ 全球安卓最強芯!

    在昨日舉行的的聯發科新一代旗艦芯片天璣9200+的發布會上,iQOO官方也正式宣布,全新的iQOO Neo8系列新品將全球首發搭載這款當前性能最強大的移動平臺
Top 主站蜘蛛池模板: 天柱县| 东阿县| 固阳县| 皮山县| 通辽市| 东兴市| 桂阳县| 永仁县| 自治县| 奉节县| 衡东县| 苏尼特右旗| 铜梁县| 抚宁县| 双柏县| 安阳市| 南华县| 陇川县| 莎车县| 阿鲁科尔沁旗| 香格里拉县| 射阳县| 保靖县| 乌拉特中旗| 义乌市| 黄山市| 十堰市| 马鞍山市| 武隆县| 津市市| 茂名市| 桑植县| 咸宁市| 万州区| 乳山市| 吉林省| 阳西县| 土默特右旗| 晋江市| 乐山市| 阿克苏市|