[TOC] #### 1. uniapp 微信小程序分享 --- 在微信小程序中,點擊右上角的三個點按鈕,會出現(xiàn)一個彈窗,在彈窗中可以看到三個分享操作:**轉(zhuǎn)發(fā)到朋友**、**分享到朋友圈**、**分享到企業(yè)微信**,這三個分享默認情況下都是灰色的,代表不可用,當需要使用分享功能時可通過代碼實現(xiàn) 轉(zhuǎn)發(fā)到朋友:可以將小程序分享給微信好友、微信群 分享到朋友圈:可以將小程序分享到微信朋友圈 分享到企業(yè)微信:可以將小程序分享給企業(yè)微信好友、企業(yè)微信群 當頁面中定義 `onShareAppMessage` 生命周期后,**轉(zhuǎn)發(fā)到朋友** 和 **分享到企業(yè)微信** 就可以正常使用了 onShareAppMessage 文檔:[https://uniapp.dcloud.net.cn/api/plugins/share.html#onshareappmessage](https://uniapp.dcloud.net.cn/api/plugins/share.html#onshareappmessage) ```javascript export default { onShareAppMessage(res) { } } ``` 實現(xiàn)小程序分享,有兩種方式: 1、點擊右上角的三個點 2、通過 button 組件的開發(fā)能力 `open-type="share"` 觸發(fā)分享 `onShareAppMessage(res)` 的回調(diào)參數(shù) res 值示例: ```javascript // 通過右上角的三個點觸發(fā)的觸發(fā)的回調(diào)參數(shù) { "from": "menu", } // 通過 button 組件的開發(fā)能力觸發(fā)的回調(diào)參數(shù) { "from":"button", "target":{ "id":"", "dataset":{ }, "offsetTop":249, "offsetLeft":138 } } ``` 使用示例: title 為空字符串時,默認為當前頁面標題 path 為空字符串時,默認為當前頁面路徑 ```javascript export default { // 轉(zhuǎn)發(fā)到朋友和企業(yè)微信 onShareAppMessage(res) { // 通過button按鈕觸發(fā) if (res.from === 'button') { console.log(res.target) } return { title: "首頁", //分享標題 path: "/pages/login/login", //分享鏈接 } } } ``` 當頁面中定義 `onShareTimeline` 生命周期時,**分享到朋友圈** 就可以正常使用了 ```javascript export default { // 分享到微信朋友圈 onShareTimeline(res) { return { title: "首頁", //分享標題 path: "/pages/login/login",//分享鏈接 } } } ``` #### 2. uView 的微信小程序分享 --- uview 小程序分享文檔:[https://www.uviewui.com/js/mpShare.html](https://www.uviewui.com/js/mpShare.html) uview 小程序分享是對 uni 的 onShareAppMessage 生命周期的封裝 在 main.js 中添加以下代碼,打開小程序分享功能,將小程序的所有頁面分享功能都打開了 默認只開啟分享給朋友,并沒有開啟分享到朋友圈,可通過查看 **libs/mixin/mpShare/mpShare.js** 證實這個結論 ```javascript // 引入uView對小程序分享的mixin封裝 const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare'); Vue.mixin(mpShare) ``` 同時開啟 **分享給朋友** 和 **分享到朋友圈** ```javascript // 引入uView對小程序分享的mixin封裝 const mpShare = require('@/uni_modules/uview-ui/libs/mixin/mpShare'); // 打開所有頁面的分享到朋友圈功能 mpShare.onShareTimeline = res => ({ title: '', path: '' }) Vue.mixin(mpShare) ```