微信小程序通過uni-app進(jìn)行全局分享
實際使用中,經(jīng)常需要小程序分享到好友或者朋友圈,一般而言是一個個頁面去設(shè)置。
官網(wǎng)分享介紹:https://uniapp.dcloud.io/api/plugins/share?id=onshareappmessage
單頁面每一個需要分享的頁面多需要單獨(dú)寫上
copyexport default { //發(fā)送給朋友 onShareAppMessage(res) { if (res.from === 'button') {// 來自頁面內(nèi)分享按鈕 console.log(res.target) } return { title: '自定義分享標(biāo)題', path: '/pages/test/test?id=123' } }, //分享到朋友圈 onShareTimeline(res) { return { title: '自定義分享標(biāo)題', path: '/pages/test/test?id=123' } } }
重復(fù)代碼不說,還特別容易搞混,一不小心就漏掉參數(shù)忘記修改。
分享參數(shù)配置介紹:
全局分享
減少每個頁面重復(fù)代碼,全局設(shè)置分享代碼。
先在更目錄下創(chuàng)建utils文件夾下,創(chuàng)建wxShare.js
創(chuàng)建成功后在mian.js中導(dǎo)入該wxShare.js
//分享設(shè)置
import share from './utils/wxShare.js'
Vue.mixin(share)
wxShare.js簡介
創(chuàng)建一個頁面基礎(chǔ)js,包含data
,onShareAppMessage
,onShareTimeline
三個即可
data
:分享參數(shù)設(shè)置:可以參考最開始的配置圖
onShareAppMessage
:分享到微信好友配置
onShareTimeline
:分享到朋友圈配置
copyexport default { data() { return { share: { // 轉(zhuǎn)發(fā)的標(biāo)題 (默認(rèn)標(biāo)題) title: '默認(rèn)標(biāo)題--分享標(biāo)題', // 默認(rèn)是當(dāng)前頁面,必須是以‘/'開頭的完整路徑 path: '', //自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑, //支持PNG及JPG,不傳入 imageUrl 則使用默認(rèn)截圖。顯示圖片長寬比是 5:4 imageUrl: '' } } }, // 發(fā)送給朋友 onShareAppMessage(res) { return { title: '發(fā)送給朋友', path: '/pages/test/test' } }, //分享到朋友圈 onShareTimeline(res) { return { title: '分享到朋友圈', path: '/pages/test/test' } } }
到次一個最基本的全局分享已經(jīng)完成,細(xì)心的朋友可能會發(fā)現(xiàn)data里面的參數(shù)沒有使用上,而且每一個分享出去的參數(shù)全部是固定的,不能動態(tài)的去配置,和理想中的全局分享差別是很大的
getCurrentPages()
函數(shù)
getCurrentPages()
函數(shù)用于獲取當(dāng)前頁面棧的實例,以數(shù)組形式按棧的順序給出,第一個元素為首頁,最后一個元素為當(dāng)前頁面。
注意: getCurrentPages()
僅用于展示頁面棧的情況,請勿修改頁面棧,以免造成頁面狀態(tài)錯誤。
官網(wǎng)介紹:https://uniapp.dcloud.io/collocation/frame/window?id=getcurrentpages
優(yōu)化onShareAppMessage分享給朋友
copy// 發(fā)送給朋友 onShareAppMessage(res) { // 獲取加載的頁面 let pages = getCurrentPages(), // 獲取當(dāng)前頁面的對象 view = pages[pages.length - 1]; //分享的頁面路徑 this.share.path = `/${view.route}`; //轉(zhuǎn)發(fā)參數(shù) return this.share; },
動態(tài)獲取頁面路徑,在分享出去。
當(dāng)下有一個比較明顯的問題,小程序的標(biāo)題目前沒有方式直接獲取。
設(shè)置頁面分享標(biāo)題
找到一個曲線救國的方法,在每一個頁面需要分享的頁面動態(tài)設(shè)置標(biāo)題
copyexport default { onLoad() { /* 在要分享的頁面 生命周期中 設(shè)計當(dāng)前頁面分享標(biāo)題 this.share 為獲取 wxShare.js中的定義的share數(shù)據(jù) */ this.share.title = "當(dāng)前頁面分享標(biāo)題" }, }
效果展示
button分享到好友
頁面中放置的分享按鈕(<button open-type="share">
)
代碼與上面并無區(qū)別,只是有一個單獨(dú)的區(qū)域給配置參數(shù)。
copy// 發(fā)送給朋友 onShareAppMessage(res) { // 來自頁面內(nèi)的按鈕的轉(zhuǎn)發(fā) if (res.from == 'button') { console.log("按鈕轉(zhuǎn)發(fā)--配置"); } // 獲取加載的頁面 let pages = getCurrentPages(), // 獲取當(dāng)前頁面的對象 view = pages[pages.length - 1]; //分享的頁面路徑 this.share.path = `/${view.route}`; //轉(zhuǎn)發(fā)參數(shù) return this.share; }
優(yōu)化onShareTimeline分享到朋友圈
在配置上基本上與分享到好友一模一樣
copy//分享到朋友圈 onShareTimeline(res) { // 獲取加載的頁面 let pages = getCurrentPages(), // 獲取當(dāng)前頁面的對象 view = pages[pages.length - 1]; // console.log("獲取加載的頁面", pages); //console.log("當(dāng)前頁面的對象", view); this.share.path = `/${view.route}`; //轉(zhuǎn)發(fā)參數(shù) return this.share; }
全局分享基本上配置就如上介紹。
分享動態(tài)修改頁面路徑是沒問題了,目前還有個問題動態(tài)分享路徑加參數(shù)的配置這一塊還是個問題。
wxShare.js代碼
copyexport default { data() { return { share: { // 轉(zhuǎn)發(fā)的標(biāo)題 (默認(rèn)標(biāo)題) title: '默認(rèn)標(biāo)題--分享標(biāo)題', // 默認(rèn)是當(dāng)前頁面,必須是以‘/'開頭的完整路徑 path: '', //自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑, //支持PNG及JPG,不傳入 imageUrl 則使用默認(rèn)截圖。顯示圖片長寬比是 5:4 imageUrl: '' } } }, /* 在要分享的頁面 生命周期中 設(shè)計當(dāng)前頁面分享標(biāo)題 onLoad() { this.share.title = "當(dāng)前頁面分享標(biāo)題" }, */ // 發(fā)送給朋友 onShareAppMessage(res) { // 來自頁面內(nèi)的按鈕的轉(zhuǎn)發(fā) if (res.from == 'button') { console.log("按鈕轉(zhuǎn)發(fā)--配置"); } // 獲取加載的頁面 let pages = getCurrentPages(), // 獲取當(dāng)前頁面的對象 view = pages[pages.length - 1]; this.share.path = `/${view.route}`; //轉(zhuǎn)發(fā)參數(shù) return this.share; }, //分享到朋友圈 onShareTimeline(res) { // 獲取加載的頁面 let pages = getCurrentPages(), // 獲取當(dāng)前頁面的對象 view = pages[pages.length - 1]; // console.log("獲取加載的頁面", pages); console.log("當(dāng)前頁面的對象", view); this.share.path = `/${view.route}`; //轉(zhuǎn)發(fā)參數(shù) return this.share; } } wxShare.js
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
移動端翻頁插件dropload.js(支持Zepto和jQuery)
這篇文章主要為大家詳細(xì)介紹了移動端翻頁插件dropload.js,支持Zepto和jQuery,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-07-07JavaScript函數(shù)之call、apply以及bind方法案例詳解
這篇文章主要介紹了JavaScript函數(shù)之call、apply以及bind方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08JavaScript與jQuery實現(xiàn)的閃爍輸入效果
這篇文章主要介紹了JavaScript與jQuery實現(xiàn)的閃爍輸入效果,結(jié)合實例形式分別分析了JavaScript與jQuery實現(xiàn)閃爍輸入效果的方法與具體使用技巧,需要的朋友可以參考下2016-02-02Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本...2006-09-09