• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    動態調用原生JS的方法及相關設備技術

    技術編號:38992303 閱讀:19 留言:0更新日期:2023-10-07 10:22
    本申請屬于軟件開發技術領域,涉及一種動態調用原生JS的方法,包括在Flutter web調用原生JS時,Flutter web生成第一調用請求,并采用第一橋接層將第一調用請求發送給原生JS,原生JS接收第一調用請求,采用第二橋接層處理第一調用請求,并將得到的處理結果反饋給Flutter web,其中,第二橋接層包含通信協議,并存在于原生JS中,在原生JS調用Flutter web時,原生JS采用第二橋接層訪問調用第一橋接層的功能函數。本申請還提供一種動態調用原生JS的裝置、計算機設備及存儲介質。本申請通過橋階層和通信協議,實現Flutter web和原生JS的便捷調用,實現雙向通信,提高開發效率。提高開發效率。提高開發效率。

    【技術實現步驟摘要】
    動態調用原生JS的方法及相關設備


    [0001]本申請涉及軟件開發
    ,尤其涉及一種動態調用原生JS的方法及相關設備。

    技術介紹

    [0002]隨著移動互聯網技術的發展,移動APP和Web應用在現代軟件開發中占據重要地位。Flutter是一種跨平臺的移動應用開發框架,可以使用Dart編程語言構建高性能、美觀的移動應用。然而,有時候需要在Flutter Web應用中使用原生JavaScript(簡稱原生JS)代碼,以便訪問Web瀏覽器的特定功能或庫,但Flutter與原生JavaScript無法直接通信,導致難以實現互相調用。

    技術實現思路

    [0003]本申請的目的在于提出一種動態調用原生JS的方法、裝置、計算機設備及存儲介質,以實現Flutter Web與原生JS互相調用。
    [0004]為了解決上述技術問題,本申請實施例提供一種動態調用原生JS的方法,采用了如下所述的技術方案:
    [0005]在Flutter web調用原生JS時,Flutter web生成第一調用請求,并采用所述第一橋接層將所述第一調用請求發送給原生JS,其中,所述第一橋接層中包含用于Flutter web與原生JS進行通信的通信協議,所述第一橋接層存在于所述Flutter web中;
    [0006]所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web,其中,所述第二橋接層包含所述通信協議,所述第二橋接層存在于所述原生JS中;
    [0007]在所述原生JS調用Flutter web時,所述原生JS采用所述第二橋接層訪問調用第一橋接層的功能函數,以使所述原生JS通過所述功能函數將web瀏覽器中的數據和事件傳遞給Flutter web。
    [0008]進一步地,在所述Flutter web生成第一調用請求的步驟之前,還包括:
    [0009]創建Flutter Web項目,作為所述Flutter web;
    [0010]在所述Flutter web項目中創建所述第一橋接層,并在所述橋接層定義所述通信協議,所述通信協議包括消息格式、函數調用規范和錯誤處理機制,所述通信協議的結構采用類或者函數表示。
    [0011]進一步地,所述在所述Flutter web項目中創建所述第一橋接層,并在所述橋接層定義所述通信協議的步驟之后,還包括:
    [0012]在Flutter web項目的web包中新建JS文件夾;
    [0013]在所述JS文件夾的index.html中引入每個待交互的原生JS。
    [0014]進一步地,所述采用所述第一橋接層將所述第一調用請求發送給原生JS的步驟包括:
    [0015]對所述第一調用請求中的參數進行參數序列化,得到序列化參數;
    [0016]在所述第一橋接層中添加第一函數,并采用所述第一函數將所述序列化參數發送給原生JS。
    [0017]進一步地,所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web的步驟包括:
    [0018]所述原生JS接收所述序列化參數,并采用第二橋接層的第二函數對所述序列化參數進行解析;
    [0019]根據解析結果生成處理結果;
    [0020]對所述處理結果進行反序列化,得到反序列化數據;
    [0021]將所述反序列化數據反饋給所述Flutter web。
    [0022]進一步地,在所述所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web的步驟之前,還包括:
    [0023]基于JavaScript函數和對象構建所述第二橋接層。
    [0024]進一步地,在所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web的步驟之后,還包括:
    [0025]若處理結果為調用成功,則采用所述第一橋接層、所述第二橋接層調用Flutter Web和原生JS之間的函數進行消息傳遞。
    [0026]為了解決上述技術問題,本申請實施例還提供一種動態調用原生JS的裝置,采用了如下所述的技術方案:
    [0027]請求發送模塊,用于在Flutter web調用原生JS時,Flutter web生成第一調用請求,并采用所述第一橋接層將所述第一調用請求發送給原生JS,其中,所述第一橋接層中包含用于Flutter web與原生JS進行通信的通信協議,所述第一橋接層存在于所述Flutter web中;
    [0028]第一調用模塊,用于所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web,其中,所述第二橋接層包含所述通信協議,所述第二橋接層存在于所述原生JS中;
    [0029]第二調用模塊,用于在所述原生JS調用Flutter web時,所述原生JS采用所述第二橋接層訪問調用第一橋接層的功能函數,以使所述原生JS通過所述功能函數將web瀏覽器中的數據和事件傳遞給Flutter web。
    [0030]進一步地,所述動態調用原生JS的裝置還包括:
    [0031]項目創建模塊,用于創建Flutter Web項目,作為所述Flutter web;
    [0032]協議生成模塊,用于在所述Flutter web項目中創建所述第一橋接層,并在所述橋接層定義所述通信協議,所述通信協議包括消息格式、函數調用規范和錯誤處理機制,所述通信協議的結構采用類或者函數表示。
    [0033]進一步地,所述動態調用原生JS的裝置還包括:
    [0034]JS文件夾創建模塊,用于在Flutter web項目的web包中新建JS文件夾;
    [0035]原生JS引入模塊,用于在所述JS文件夾的index.html中引入每個待交互的原生JS。
    [0036]進一步地,所述請求發送模塊包括:
    [0037]序列化單元,用于對所述第一調用請求中的參數進行參數序列化,得到序列化參數;
    [0038]第一發送單元,用于在所述第一橋接層中添加第一函數,并采用所述第一函數將所述序列化參數發送給原生JS。
    [0039]進一步地,所述第一調用模塊包括:
    [0040]解析單元,用于所述原生JS接收所述序列化參數,并采用第二橋接層的第二函數對所述序列化參數進行解析;
    [0041]結果生成單元,用于根據解析結果生成處理結果;
    [0042]反序列化單元,用于對所述處理結果進行反序列化,得到反序列化數據;
    [0043]第二發送單元,用于將所述反序列化數據反饋給所述Flutter web。
    [0044]進一步地,所述動態調用原生JS的裝置還包括:
    [0045]第二橋接層構建模塊,用于基于JavaScript函數和對象構建所述第二橋接層。
    [0本文檔來自技高網
    ...

    【技術保護點】

    【技術特征摘要】
    1.一種動態調用原生JS的方法,其特征在于,包括下述步驟:在Flutter web調用原生JS時,Flutter web生成第一調用請求,并采用第一橋接層將所述第一調用請求發送給原生JS,其中,所述第一橋接層中包含用于Flutter web與原生JS進行通信的通信協議,所述第一橋接層存在于所述Flutter web中;所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web,其中,所述第二橋接層包含所述通信協議,所述第二橋接層存在于所述原生JS中;在所述原生JS調用Flutter web時,所述原生JS采用所述第二橋接層訪問調用第一橋接層的功能函數,以使所述原生JS通過所述功能函數將web瀏覽器中的數據和事件傳遞給Flutter web。2.根據權利要求1所述的動態調用原生JS的方法,其特征在于,在所述Flutter web生成第一調用請求的步驟之前,還包括:創建Flutter Web項目,作為所述Flutter web;在所述Flutter web項目中創建所述第一橋接層,并在所述橋接層定義所述通信協議,所述通信協議包括消息格式、函數調用規范和錯誤處理機制,所述通信協議的結構采用類或者函數表示。3.根據權利要求2所述的動態調用原生JS的方法,其特征在于,所述在所述Flutter web項目中創建所述第一橋接層,并在所述橋接層定義所述通信協議的步驟之后,還包括:在Flutter web項目的web包中新建JS文件夾;在所述JS文件夾的index.html中引入每個待交互的原生JS。4.根據權利要求1所述的動態調用原生JS的方法,其特征在于,所述采用所述第一橋接層將所述第一調用請求發送給原生JS的步驟包括:對所述第一調用請求中的參數進行參數序列化,得到序列化參數;在所述第一橋接層中添加第一函數,并采用所述第一函數將所述序列化參數發送給原生JS。5.根據權利要求4所述的動態調用原生JS的方法,其特征在于,所述原生JS接收所述第一調用請求,采用第二橋接層處理所述第一調用請求,并將得到的處理結果反饋給所述Flutter web的步驟包括:所述原生JS接收所述序列化參數,并采用第二橋接層的第...

    【專利技術屬性】
    技術研發人員:劉燕峰王勇蔡明金
    申請(專利權)人:深圳復臨科技有限公司
    類型:發明
    國別省市:

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲中文字幕无码爆乳AV| 国产午夜无码专区喷水| 精品三级AV无码一区| 无码精品A∨在线观看中文| 亚洲视频无码高清在线| 亚洲人成无码网WWW| 无码孕妇孕交在线观看| 日产无码1区2区在线观看| 少妇人妻偷人精品无码视频| 无码AⅤ精品一区二区三区| 无码人妻精品一区二区蜜桃网站 | 亚洲VA成无码人在线观看天堂| 亚洲AV综合色区无码二区爱AV| 波多野42部无码喷潮在线| 亚洲AV无码一区二区三区电影| 久久久久久AV无码免费网站| 中文字幕无码免费久久9一区9| 无码射肉在线播放视频| 亚洲性无码av在线| 国产a级理论片无码老男人| 人妻无码一区二区视频| 国产午夜无码福利在线看网站| 一本色道无码道DVD在线观看| 午夜无码伦费影视在线观看| 中文无码成人免费视频在线观看| 精品无码黑人又粗又大又长| 无码熟妇人妻在线视频| 无码永久免费AV网站| 亚洲最大天堂无码精品区| 亚洲AV无码成人专区| 亚洲国产日产无码精品| 69堂人成无码免费视频果冻传媒| 久久久久久AV无码免费网站下载| 久久精品无码精品免费专区| 亚洲国产a∨无码中文777| 亚洲AV无码久久| 少妇人妻无码精品视频app| 久久久久久亚洲AV无码专区| 久久Av无码精品人妻系列| 亚洲日韩一区二区一无码| 色综合久久久无码网中文|