提交 9601bc88 编写于 作者: fxy060608's avatar fxy060608

fix(app): preloadPage

上级 0ec058ee
......@@ -18154,7 +18154,8 @@ function initRouteOptions(path, openType) {
// 需要序列化一遍
const routeOptions = JSON.parse(JSON.stringify(getRouteOptions(path)));
routeOptions.meta = initRouteMeta(routeOptions.meta);
if (!__uniConfig.realEntryPagePath &&
if (openType !== 'preloadPage' &&
!__uniConfig.realEntryPagePath &&
(openType === 'reLaunch' || getCurrentPages().length === 0) // redirectTo
) {
routeOptions.meta.isQuit = true;
......@@ -18202,7 +18203,7 @@ function closePreloadWebview({ url }) {
}
function preloadWebview({ url, path, query, }) {
if (!preloadWebviews[url]) {
const routeOptions = JSON.parse(JSON.stringify(__uniRoutes.find((route) => route.path === path)));
const routeOptions = initRouteOptions(path, 'preloadPage');
preloadWebviews[url] = createWebview({
path,
routeOptions,
......@@ -18329,22 +18330,27 @@ function createNVuePage(pageId, webview, pageInstance) {
return pageInstance.eventChannel;
},
__setup(vm, curFakeNVueVm) {
vm.$getAppWebview = () => webview;
vm.getOpenerEventChannel = curFakeNVueVm.getOpenerEventChannel;
// 替换真实的 nvue 的 vm
initPageVm(vm, pageInstance);
if (webview.__preload__) {
webview.__page__ = vm;
}
const pages = getAllPages();
const index = pages.findIndex((p) => p === curFakeNVueVm);
if (index > -1) {
vm.$getAppWebview = () => webview;
vm.getOpenerEventChannel = curFakeNVueVm.getOpenerEventChannel;
// 替换真实的 nvue 的 vm
initPageVm(vm, pageInstance);
pages.splice(index, 1, vm);
if (webview.__preload__) {
webview.__page__ = vm;
}
}
},
};
initPageVm(fakeNVueVm, pageInstance);
addCurrentPage(fakeNVueVm);
if (webview.__preload__) {
webview.__page__ = fakeNVueVm;
}
else {
addCurrentPage(fakeNVueVm);
}
}
const $navigateTo = (args, { resolve, reject }) => {
......
import { ComponentPublicInstance } from 'vue'
import { createWebview } from '../webview'
import { initRouteOptions } from './routeOptions'
export interface PreloadWebviewObject extends PlusWebviewWebviewObject {
__preload__?: boolean
......@@ -51,9 +52,7 @@ export function preloadWebview({
query: Record<string, string>
}) {
if (!preloadWebviews[url]) {
const routeOptions: UniApp.UniRoute = JSON.parse(
JSON.stringify(__uniRoutes.find((route) => route.path === path))
)
const routeOptions: UniApp.UniRoute = initRouteOptions(path, 'preloadPage')
preloadWebviews[url] = createWebview({
path,
routeOptions,
......
......@@ -188,20 +188,24 @@ function createNVuePage(
return pageInstance.eventChannel as EventChannel
},
__setup(vm: ComponentPublicInstance, curFakeNVueVm: unknown) {
vm.$getAppWebview = () => webview
vm.getOpenerEventChannel = (curFakeNVueVm as any).getOpenerEventChannel
// 替换真实的 nvue 的 vm
initPageVm(vm, pageInstance)
if ((webview as PreloadWebviewObject).__preload__) {
;(webview as PreloadWebviewObject).__page__ = vm
}
const pages = getAllPages()
const index = pages.findIndex((p) => p === curFakeNVueVm)
if (index > -1) {
vm.$getAppWebview = () => webview
vm.getOpenerEventChannel = (curFakeNVueVm as any).getOpenerEventChannel
// 替换真实的 nvue 的 vm
initPageVm(vm, pageInstance)
pages.splice(index, 1, vm)
if ((webview as PreloadWebviewObject).__preload__) {
;(webview as PreloadWebviewObject).__page__ = vm
}
}
},
} as unknown as ComponentPublicInstance
initPageVm(fakeNVueVm, pageInstance)
addCurrentPage(fakeNVueVm)
if ((webview as PreloadWebviewObject).__preload__) {
;(webview as PreloadWebviewObject).__page__ = fakeNVueVm
} else {
addCurrentPage(fakeNVueVm)
}
}
......@@ -9,6 +9,7 @@ export function initRouteOptions(path: string, openType: UniApp.OpenType) {
routeOptions.meta = initRouteMeta(routeOptions.meta)
if (
openType !== 'preloadPage' &&
!__uniConfig.realEntryPagePath &&
(openType === 'reLaunch' || getCurrentPages().length === 0) // redirectTo
) {
......
import fs from 'fs'
import fs from 'fs-extra'
import path from 'path'
import { isAppNativeTag, isAppNVueNativeTag } from '@dcloudio/uni-shared'
import { compileI18nJsonStr } from '@dcloudio/uni-i18n'
......@@ -36,9 +36,11 @@ export function uniOptions(): UniVitePlugin['uni'] {
},
})
const debugFilename = '__nvue_debug__'
const debugFilepath = path.resolve(inputDir, debugFilename)
if (fs.existsSync(debugFilepath)) {
fs.copyFileSync(debugFilepath, path.resolve(outputDir, debugFilename))
if (fs.existsSync(path.resolve(inputDir, debugFilename))) {
targets.push({
src: debugFilename,
dest: outputDir,
})
}
}
return {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册