Skip to content

Commit 5ce75ac

Browse files
committed
feat: support clientHistoryRouterMode
1 parent 907ad01 commit 5ce75ac

File tree

7 files changed

+12
-18
lines changed

7 files changed

+12
-18
lines changed

@types/global/index.d.ts

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ interface IWindow {
88
clientPrefix?: string
99
microApp?: any
1010
hashRouter: boolean
11+
clientHistoryRouterMode: 'webHistory' | 'memoryHistory'
1112
ssrDevInfo: any
1213
__VALTIO_DATA__?: any
1314
}

packages/plugin-vue3/src/entry/client-entry.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ const clientRender = async () => {
2525
const store = createStore()
2626
const router = createRouter({
2727
base: isMicro() ? window.clientPrefix : window.prefix,
28-
hashRouter: window.hashRouter
28+
hashRouter: window.hashRouter,
29+
clientHistoryRouterMode: window.clientHistoryRouterMode
2930
})
3031
const pinia = createPinia()
3132
setStore(store)

packages/plugin-vue3/src/entry/create.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import { Routes } from './combine-router'
88

99
const { store, FeRoutes } = Routes as RoutesType
1010

11-
export function createRouter(options: VueRouterOptions & { hashRouter?: boolean } = {}) {
11+
export function createRouter(options: VueRouterOptions & { hashRouter?: boolean; clientHistoryRouterMode?: 'webHistory' | 'memoryHistory' } = {}) {
1212
const base = options.base ?? '/'
1313
const { hashRouter } = options
1414
return create({
15-
history: __isBrowser__ ? (hashRouter ? createWebHashHistory(base) : createWebHistory(base)) : createMemoryHistory(),
15+
history: __isBrowser__ ? (hashRouter ? createWebHashHistory(base) : options.clientHistoryRouterMode === 'webHistory' ? createWebHistory(base) : createMemoryHistory()) : createMemoryHistory(),
1616
routes: FeRoutes as any
1717
})
1818
}

packages/plugin-vue3/src/entry/server-entry.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const { FeRoutes, App, layoutFetch, Layout } = Routes
1212
const staticConfig = getStaticConfig()
1313

1414
const serverRender = async (ctx: ISSRContext, config: IConfig) => {
15-
const { mode, customeHeadScript, customeFooterScript, parallelFetch, prefix, isVite, isDev, fePort, https, clientPrefix, stream, rootId, bigpipe, hashRouter, asyncGlobalData } = config
15+
const { mode, customeHeadScript, customeFooterScript, parallelFetch, prefix, isVite, isDev, fePort, https, clientPrefix, stream, rootId, bigpipe, hashRouter, clientHistoryRouterMode, asyncGlobalData } = config
1616
const store = createStore()
1717
const router = createRouter()
1818
const pinia = createPinia()
@@ -36,6 +36,7 @@ const serverRender = async (ctx: ISSRContext, config: IConfig) => {
3636
'window.__INITIAL_PINIA_DATA__': isCsr ? {} : serialize(pinia.state.value),
3737
'window.__USE_VITE__': isVite,
3838
'window.prefix': `"${prefix}"`,
39+
'window.clientHistoryRouterMode': `"${clientHistoryRouterMode}"`,
3940
'window.clientPrefix': `"${clientPrefix ?? ''}"`,
4041
'window.ssrDevInfo': JSON.stringify(ssrDevInfo),
4142
'window.hashRouter': Boolean(hashRouter)

packages/types/src/config.ts

+1
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ export interface IConfig {
189189
streamHighWaterMark?: number
190190
asyncGlobalData?: Record<string, any>
191191
wrapMicroScope?: boolean
192+
clientHistoryRouterMode?: 'webHistory' | 'memoryHistory'
192193
}
193194

194195
export interface proxyOptions {

packages/utils/src/server/loadConfig.ts

+3-2
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ const loadConfig = (): IConfig => {
5252
const moduleFileExtensions = ['.web.mjs', '.mjs', '.web.js', '.js', '.web.ts', '.ts', '.web.tsx', '.tsx', '.json', '.web.jsx', '.jsx', '.vue', '.css']
5353
const isDev = userConfig.isDev ?? process.env.NODE_ENV !== 'production'
5454
const fePort = userConfig.fePort ?? 8999
55-
55+
const clientHistoryRouterMode = 'webHistory'
5656
const hmr = Object.assign(
5757
{
5858
// host: '127.0.0.1',
@@ -208,7 +208,8 @@ const loadConfig = (): IConfig => {
208208
dynamicFile,
209209
babelExtraModule,
210210
rootId,
211-
staticConfigPath
211+
staticConfigPath,
212+
clientHistoryRouterMode
212213
},
213214
userConfig
214215
)

pnpm-lock.yaml

+1-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)