import App from './App'
import { createSSRApp } from 'vue'
// 获取当前页面路由与参数
function getCurrentPageInfo() {
const pages = getCurrentPages()
const currentPage = pages[pages.length - 1]
return {
route: currentPage?.route
? `/${currentPage.route}`
: '/pages/index/index',
options: currentPage?.options || {}
}
}
// 将页面参数序列化为查询字符串
function getShareQuery() {
const { options } = getCurrentPageInfo()
return Object.keys(options)
.filter(key => options[key] !== undefined && options[key] !== null && options[key] !== '')
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(options[key])}`)
.join('&')
}
// 构造完整分享路径,保留当前页面上下文
function getSharePath() {
const { route } = getCurrentPageInfo()
const query = getShareQuery()
return query ? `${route}?${query}` : route
}
export function createApp() {
const app = createSSRApp(App)
app.mixin({
onShareAppMessage() {
// 在这里配置分享标题和路径
return {
title: '分享标题',
path: getSharePath()
}
},
onShareTimeline() {
return {
title: '分享标题',
query: getShareQuery()
}
}
})
return { app }
}