最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Electron+React進行通信的方法

 更新時間:2022年06月29日 09:20:09   作者:接著奏樂接著舞。  
electron其實是一個桌面應(yīng)用程序,不是一個標(biāo)準(zhǔn)的前端web程序,所有沒有什么請求的發(fā)生,控制臺network看不到請求,而是只能通過console.log去打印查看,而且通信協(xié)議使用的不是http而是gRPC協(xié)議,這篇文章主要介紹了Electron+React如何進行通信,需要的朋友可以參考下

1.前言:

Electron是使用 JavaScript,HTML 和 CSS 構(gòu)建跨平臺的桌面應(yīng)用程序

項目的技術(shù)棧為:Electron + React Hooks + typescript

2.一些理解:

這個項目分為三層,react(渲染層,前端)、electron(中臺,可以使用nodejs的一些基本系統(tǒng)功能,接收后端的數(shù)據(jù)給渲染層,將渲染層的請求給后端)-后端(處理數(shù)據(jù),發(fā)送接收數(shù)據(jù)) 

和正常的前后端分離不一樣的是,多出了一個electron,而electron其實就是在react和后端之間的通信橋梁,后端接口先到electron,再通過electron通信給react,反之也是一樣

electron其實是一個桌面應(yīng)用程序,不是一個標(biāo)準(zhǔn)的前端web程序,所有沒有什么請求的發(fā)生,控制臺network看不到請求,而是只能通過console.log去打印查看,而且通信協(xié)議使用的不是http而是gRPC協(xié)議

3.數(shù)據(jù)交互

以下三張圖截取自Electron官網(wǎng),在項目中使用非常頻繁,且很重要

4.前后端交互

 electron提供了ipcMainipcRenderer兩個類進行通信。

前端發(fā)送請求:

其中 channel可以理解為調(diào)用的方法名,需要后端對該方法進行監(jiān)聽。

const {ipcRenderer} = window.require('electron')
ipcRenderer.send(channel, data)

后端接受請求:

const { ipcMain } = electron
ipcMain.on(channel, (event, arg) => {
  # do something here  
})

反過來:

后端發(fā)送請求:

其中mainWindow為項目啟動時創(chuàng)建的窗口,如果創(chuàng)建了多個窗口,可以向指定的窗口發(fā)送請求。

mainWindow.webContents.send(channel, data)

前端監(jiān)聽請求

const {ipcRenderer} = window.require('electron')
ipcRenderer.on(channel, (event, arg) => {
  # do something here
})

5.一些代碼舉例:

這是electron的文件用于向react通信,可以看到主要使用的是ipcMain這個對象

const { ipcMain } = require("electron")
 
module.exports = (win, getClient) => {
  
    ipcMain.handle("QueryYakScript", async (e, params) => {
        return await asyncQueryYakScript(params)
    })
 
   
    ipcMain.handle("DeleteYakScriptExecResult", async (e, params) => {
        return await asyncDeleteYakScriptExecResult(params)
    })
}

 這是react的文件用于和electron通信,可以看到主要使用的是ipcRenderer這個對象,你會發(fā)現(xiàn)前后端沒有直接交互,而均是通過electron這個“中間人”

 ipcRenderer.on(errorChannel, (e: any, error: any) => {
            setError(error)
        })
        ipcRenderer.on(endChannel, (e: any, data: any) => {
            info("模塊加載完成 / 執(zhí)行完畢")
            setExecuting(false)
            updateTasks()
        })

這是electron和后端通信的接口

到此這篇關(guān)于Electron+React如何進行通信的文章就介紹到這了,更多相關(guān)Electron React通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • webpack4 + react 搭建多頁面應(yīng)用示例

    webpack4 + react 搭建多頁面應(yīng)用示例

    這篇文章主要介紹了webpack4 + react 搭建多頁面應(yīng)用示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • react-native彈窗封裝的方法

    react-native彈窗封裝的方法

    這篇文章主要為大家詳細(xì)介紹了react-native彈窗封裝的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • react?Table準(zhǔn)備Spin?Empty?ConfigProvider組件實現(xiàn)

    react?Table準(zhǔn)備Spin?Empty?ConfigProvider組件實現(xiàn)

    這篇文章主要為大家介紹了react?Table準(zhǔn)備Spin、Empty、ConfigProvider組件實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-02-02
  • react antd checkbox實現(xiàn)全選、多選功能

    react antd checkbox實現(xiàn)全選、多選功能

    目前好像只有table組件有實現(xiàn)表格數(shù)據(jù)的全選功能,如果說對于list,card,collapse等其他組件來說,需要自己結(jié)合checkbox來手動實現(xiàn)全選功能,這篇文章主要介紹了react antd checkbox實現(xiàn)全選、多選功能,需要的朋友可以參考下
    2024-07-07
  • 使用 React hooks 實現(xiàn)類所有生命周期

    使用 React hooks 實現(xiàn)類所有生命周期

    react 自 16.8 開始,引入了 Hooks 概念,使得函數(shù)組件中也可以擁有自己的狀態(tài),并且可以模擬對應(yīng)的生命周期,這篇文章主要介紹了使用 React hooks 怎么實現(xiàn)類里面的所有生命周期,需要的朋友可以參考下
    2023-02-02
  • react-redux中connect()方法詳細(xì)解析

    react-redux中connect()方法詳細(xì)解析

    connect()是React-redux中的核心方法之一,它將react組件預(yù)redux中的Store真正連接在一起,下面這篇文章主要給大家介紹了react-redux中connect()方法的相關(guān)資料,文中介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • 深入了解React中的虛擬DOM

    深入了解React中的虛擬DOM

    歡迎來到今天的探險之旅!在這篇博客中,我們將深入了解 React 中神奇的虛擬DOM,并通過一個簡單的例子來揭開其神秘面紗,文中通過代碼示例也講解非常詳細(xì),感興趣的朋友可以參考下
    2024-01-01
  • create-react-app中添加less支持的實現(xiàn)

    create-react-app中添加less支持的實現(xiàn)

    這篇文章主要介紹了react.js create-react-app中添加less支持的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • React服務(wù)端渲染原理解析與實踐

    React服務(wù)端渲染原理解析與實踐

    這篇文章主要介紹了React服務(wù)端渲染原理解析與實踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • React+Antd 實現(xiàn)可增刪改表格的示例

    React+Antd 實現(xiàn)可增刪改表格的示例

    這篇文章主要介紹了React+Antd實現(xiàn)可增刪改表格的示例,幫助大家更好的理解和學(xué)習(xí)使用React,感興趣的朋友可以了解下
    2021-04-04

最新評論

清新县| 南华县| 奉贤区| 波密县| 潼关县| 永安市| 龙泉市| 房产| 乌什县| 张家界市| 方正县| 山丹县| 达拉特旗| 大兴区| 奉新县| 定结县| 汤原县| 霞浦县| 英山县| 秀山| 阿图什市| 垫江县| 涟水县| 乐清市| 锡林浩特市| 西林县| 忻城县| 太仆寺旗| 靖远县| 东至县| 翼城县| 乌鲁木齐市| 成都市| 丁青县| 曲阜市| 临沂市| 锦屏县| 湖北省| 玉山县| 油尖旺区| 利川市|