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

refactor(h5): setup page

上级 216c2838
......@@ -54,7 +54,7 @@ function generatePagesJsonCode(
return `
import { defineAsyncComponent, resolveComponent, createVNode, withCtx, openBlock, createBlock } from 'vue'
import { PageComponent, AsyncLoadingComponent, AsyncErrorComponent, useI18n, setupWindow } from '@dcloudio/uni-h5'
import { PageComponent, AsyncLoadingComponent, AsyncErrorComponent, useI18n, setupWindow, setupPage } from '@dcloudio/uni-h5'
import { appid, debug, networkTimeout, router, async, sdkConfigs, qqMapKey, googleMapKey, nvue, locale, fallbackLocale } from '${manifestJsonPath}'
const locales = import.meta.globEager('./locale/*.json')
${importLayoutComponentsCode}
......@@ -181,7 +181,7 @@ function generatePageDefineCode(pageOptions: UniApp.PagesJsonPageOptions) {
pagePathWithExtname = pageOptions.path + '.vue'
}
const pageIdent = normalizeIdentifier(pageOptions.path)
return `const ${pageIdent}Loader = ()=>import('./${pagePathWithExtname}')
return `const ${pageIdent}Loader = ()=>import('./${pagePathWithExtname}').then(com => setupPage(com.default || com))
const ${pageIdent} = defineAsyncComponent(extend({loader:${pageIdent}Loader},AsyncComponentOptions))`
}
......
import path from 'path'
import debug from 'debug'
import type { Plugin } from 'vite'
import {
EXTNAME_JS_RE,
normalizePath,
parseVueRequest,
isUniPageSfcFile,
} from '@dcloudio/uni-cli-shared'
import { normalizePath, parseVueRequest } from '@dcloudio/uni-cli-shared'
const debugSetup = debug('vite:uni:setup')
......@@ -28,19 +23,6 @@ export function uniSetupPlugin(): Plugin {
`;import { setupApp } from '@dcloudio/uni-h5';setupApp(_sfc_main);`
)
}
if (isUniPageSfcFile(id)) {
debugSetup(filename)
// js,ts,jsx,tsx
const isJs = EXTNAME_JS_RE.test(filename)
if (isJs) {
code = code.replace(/export\s+default/, 'const _sfc_main =')
}
code += `;import { setupPage } from '@dcloudio/uni-h5';setupPage(_sfc_main);`
if (isJs) {
code += ';export default _sfc_main;'
}
return code
}
},
}
}
import { extend, invokeArrayFns, isPlainObject } from '@vue/shared'
import {
nextTick,
ComponentInternalInstance,
ComponentPublicInstance,
createBlock,
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册