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

vue調(diào)用原生方法交互解讀

 更新時間:2022年09月21日 16:51:27   作者:前端菜中菜  
這篇文章主要介紹了vue調(diào)用原生方法交互,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue調(diào)用原生方法交互

目前在做一個H5應(yīng)用;需要調(diào)用原生方法進(jìn)行交互;特此做一個記錄。

技術(shù)棧 : vue版本2.6 vant版本 2.12

第一步

聲明一個rpcFn.js文件 進(jìn)行原生交互阿里橋封裝

const rpc = function (url, params) {
? return new Promise((res, ref) => {
? ? try {
? ? ? // 呼起 JSBridge阿里橋', url:路徑; params:參數(shù);
? ? ? window.AlipayJSBridge.call(url, {
? ? ? ? ...params
? ? ? }, (result) => {
? ? ? ? let code = result.code * 1;
? ? ? ? // result:回調(diào)數(shù)據(jù)源;
? ? ? ? // 判斷狀態(tài) 是否 200
? ? ? ? if (result && code === 200) {
? ? ? ? ? res(result);
? ? ? ? } else {
? ? ? ? ? // 這里可以統(tǒng)一做一些 提示操作
? ? ? ? ? ref(result);
? ? ? ? }
? ? ? });
? ? } catch (e) {
? ? ? ref(e, '設(shè)備不支持');
? ? }
? });
};
export default rpc;

第二步

聲明rpc.js 引入 封裝的 rpcFn 原生方法; 進(jìn)行公共封裝

import rpcFn from './rpcFn.js';
// 引入整個vue 實例
import Vue from 'vue';
const newVue = new Vue();
// 這里做一個數(shù)據(jù) 遍歷 需要增加原生方法的話直接在rpcList增加
const rpcList = [
? // 百度定位
? 'baiduPositioning',
? // 人臉識別認(rèn)證
? 'peopleFace',
? // 拍照
? 'gotoCamera',
? ...
];
const rpcListLength = rpcList.length;
const rpcFuncObj = {};
for (let i = 0; i < rpcListLength; i++) {
? const rpcName = rpcList[i];
? //firstLetterToUpperCase 方法 將 rpcList 每一項的首字母轉(zhuǎn)大寫 peopleFace => PeopleFace
? const rpcFuncName = `rpc${newVue.firstLetterToUpperCase(rpcName)}`;
? rpcFuncObj[rpcFuncName] = function (params) {
? ? return rpcFn(rpcName, params);
? };
? // rpcName:每一項原生方法; rpcFuncName:掛載在vue實例上完整的原生方法;params:原生方法的參數(shù); peopleFace => rpcPeopleFace
}
// 方法導(dǎo)出
export default {
? ...rpcFuncObj
};

第三步

在 main.js 引入,掛載在vue 實例上

import rpc from 'rpc.js';
// 遍歷掛載在 vue實例上
Object.keys(rpc).forEach(rpcName => {
? Vue.prototype[rpcName] = rpc[rpcName];
});

第四步

在頁面中調(diào)用原生方法

<!--頁面按鈕執(zhí)行事件-->
<Button @click="handleClick()">按鈕</Button>
?
// 按鈕執(zhí)行 原生定位事件
handleClick() {
? // 這里 我們可以打印 this ; ps: this指向整個 vue實例
? console.log(this,'vue實例');
? this.rpcBaiduPositioning().then((res) => {
? ? //獲取原生定位數(shù)據(jù)
? ? console.log(res, "原生定位地址數(shù)據(jù)在這里");
? }).catch(rej => {
? ? Toast.fail(rej.message);
? });
};

vue和原生native交互使用

安卓與Vue交互方式

首先Vue調(diào)用安卓這方面不用說了,使用方式和html調(diào)用安卓Native方法一致,這里就不做多說了,下面重點要說的是安卓調(diào)用Vue的function,這里要特別說明下,安卓端調(diào)用代碼不變,主要是Vue端實現(xiàn)。

因為安卓與網(wǎng)頁之間的交互是通過window來實現(xiàn)的,但是因為Vue的的內(nèi)部實現(xiàn)邏輯對付function方法并不是掛載到window下的,所以安卓就無法通過window調(diào)用Vue當(dāng)中的方法,然后就導(dǎo)致了不管原生怎么修改代碼最后都無法實現(xiàn)調(diào)用網(wǎng)頁端的function代碼。

知道了原因解決起來就容易了,既然是因為Vue無法將function代碼掛載到window下,那么就手動將function方法掛載到window上就好了,這個實現(xiàn)起來也容易,無非就是在vue的oncrete或者mount方法下面使用window.funcName = this.funcName 或者**window.funcName = function(){}**這兩種方法實現(xiàn)將function掛載到window上,這樣就可以實現(xiàn)了原生訪問網(wǎng)頁代碼的操作。 

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 極速上手 VUE 3 teleport傳送門組件及使用語法

    極速上手 VUE 3 teleport傳送門組件及使用語法

    teleport 傳送門組件,提供一種簡潔的方式,可以指定它里面的內(nèi)容的父元素,也就是說teleport 中的內(nèi)容允許我們控制在任意的DOM中,使用簡單,對VUE 3 teleport傳送門相關(guān)知識感興趣的朋友一起看看吧
    2021-10-10
  • Vue打包為相對路徑的具體實現(xiàn)方法

    Vue打包為相對路徑的具體實現(xiàn)方法

    在Vue.js項目中,構(gòu)建后的資源文件(如CSS、JavaScript文件、圖片等)通常會被放置在指定的目錄下,為了確保這些文件能夠被正確加載,Vue CLI 提供了配置選項來指定這些文件的路徑,本文給大家介紹了Vue打包為相對路徑的具體實現(xiàn)方法,需要的朋友可以參考下
    2024-09-09
  • 詳解Vue中的filter與directive

    詳解Vue中的filter與directive

    這篇文章主要介紹了Vue中的filter與directive的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-05-05
  • VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例

    VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例

    今天小編就為大家分享一篇VUE v-for循環(huán)中每個item節(jié)點動態(tài)綁定不同函數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • React?Diff算法不采用Vue的雙端對比原因詳解

    React?Diff算法不采用Vue的雙端對比原因詳解

    這篇文章主要介紹了React?Diff算法不采用Vue雙端對比算法原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 淺析Vue3中的計算屬性和屬性監(jiān)聽

    淺析Vue3中的計算屬性和屬性監(jiān)聽

    這篇文章主要為大家詳細(xì)介紹了Vue3中的計算屬性和屬性監(jiān)聽的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-08-08
  • Vue.js通過組件處理Icon圖標(biāo)

    Vue.js通過組件處理Icon圖標(biāo)

    這篇文章介紹了Vue.js通過組件處理Icon圖標(biāo)的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Antd表格滾動 寬度自適應(yīng) 不換行的實例

    Antd表格滾動 寬度自適應(yīng) 不換行的實例

    這篇文章主要介紹了Antd表格滾動 寬度自適應(yīng) 不換行的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • vue、react等單頁面項目部署到服務(wù)器的方法及vue和react的區(qū)別

    vue、react等單頁面項目部署到服務(wù)器的方法及vue和react的區(qū)別

    這篇文章主要介紹了vue、react等單頁面項目部署到服務(wù)器的方法,需要的朋友可以參考下
    2018-09-09
  • Vue $nextTick 為什么能獲取到最新Dom源碼解析

    Vue $nextTick 為什么能獲取到最新Dom源碼解析

    這篇文章主要為大家介紹了Vue $nextTick 為什么能獲取到最新Dom源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10

最新評論

绥江县| 仲巴县| 分宜县| 绥中县| 小金县| 吉林省| 平山县| 木里| 互助| 云林县| 南汇区| 柳林县| 屏东市| 都江堰市| 鄯善县| 澄城县| 桃园市| 宾阳县| 德安县| 玛多县| 蓬溪县| 洞头县| 永清县| 通江县| 南召县| 乌鲁木齐县| 永年县| 梁平县| 宝山区| 石渠县| 武乡县| 聊城市| 革吉县| 邢台县| 余姚市| 哈密市| 庆安县| 井研县| 大名县| 忻州市| 灌云县|