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

Electron+React進(jìn)行通信的方法

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

1.前言:

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

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

2.一些理解:

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

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

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

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

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

4.前后端交互

 electron提供了ipcMainipcRenderer兩個(gè)類進(jìn)行通信。

前端發(fā)送請(qǐng)求:

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

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

后端接受請(qǐng)求:

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

反過(guò)來(lái):

后端發(fā)送請(qǐng)求:

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

mainWindow.webContents.send(channel, data)

前端監(jiān)聽(tīng)請(qǐng)求

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

5.一些代碼舉例:

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

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這個(gè)對(duì)象,你會(huì)發(fā)現(xiàn)前后端沒(méi)有直接交互,而均是通過(guò)electron這個(gè)“中間人”

 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如何進(jìn)行通信的文章就介紹到這了,更多相關(guān)Electron React通信內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

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

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

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

    react-native彈窗封裝的方法

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

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

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

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

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

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

    react 自 16.8 開(kāi)始,引入了 Hooks 概念,使得函數(shù)組件中也可以擁有自己的狀態(tài),并且可以模擬對(duì)應(yīng)的生命周期,這篇文章主要介紹了使用 React hooks 怎么實(shí)現(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ì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起看看吧。
    2017-05-05
  • 深入了解React中的虛擬DOM

    深入了解React中的虛擬DOM

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

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

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

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

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

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

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

最新評(píng)論

天长市| 沁阳市| 自治县| 和林格尔县| 厦门市| 蓬安县| 罗田县| 南陵县| 茌平县| 尚义县| 昌宁县| 海伦市| 庆元县| 尖扎县| 潮安县| 长葛市| 若羌县| 通江县| 尚志市| 万源市| 吉水县| 中阳县| 会同县| 兰坪| 大埔县| 普陀区| 巴中市| 和顺县| 安福县| 灵川县| 双江| 福清市| 静宁县| 五河县| 新津县| 青海省| 潍坊市| 龙山县| 彭山县| 德格县| 时尚|