merge
This commit is contained in:
28
src/app.ts
28
src/app.ts
@@ -1,28 +0,0 @@
|
||||
// 当前的功能,把所有的模块注入到windows对象当中
|
||||
import * as WebEnv from './web-env.ts';
|
||||
import * as Load from '@kevisual/load/browser';
|
||||
import { Page } from './page.ts';
|
||||
|
||||
export class PageInit {
|
||||
static isInit = false;
|
||||
static init(opts?: { load?: boolean; page?: boolean }) {
|
||||
if (PageInit.isInit) {
|
||||
return;
|
||||
}
|
||||
const { load = true, page = false } = opts || {};
|
||||
PageInit.isInit = true;
|
||||
// bind to window, 必须要的获取全局的环境变量
|
||||
const { useConfigKey, useContextKey } = WebEnv;
|
||||
window.useConfigKey = useConfigKey;
|
||||
window.useContextKey = useContextKey;
|
||||
// @ts-ignore
|
||||
window.webEnv = WebEnv;
|
||||
// @ts-ignore
|
||||
load && (window.Load = Load);
|
||||
page &&
|
||||
useContextKey('page', () => {
|
||||
return new Page();
|
||||
});
|
||||
}
|
||||
}
|
||||
PageInit.init();
|
||||
17
src/page.ts
17
src/page.ts
@@ -277,7 +277,13 @@ export class Page {
|
||||
*/
|
||||
replace(path: string, state?: any, check?: boolean) {
|
||||
let _check = check ?? true;
|
||||
window.history.replaceState(state, '', this.basename + path);
|
||||
let newPath = this.basename + path;
|
||||
if (path.startsWith('http')) {
|
||||
const url = new URL(path);
|
||||
const origin = url.origin;
|
||||
newPath = url.toString().replace(origin, '');
|
||||
}
|
||||
window.history.replaceState(state, '', newPath);
|
||||
if (_check) {
|
||||
this.popstate({ state } as any, { type: 'all' });
|
||||
}
|
||||
@@ -317,17 +323,16 @@ export const getHistoryState = <T = Record<string, any>>() => {
|
||||
* 设置history state
|
||||
* @param state
|
||||
*/
|
||||
export const setHistoryState = (state: any) => {
|
||||
export const setHistoryState = (state: any, url?: string) => {
|
||||
const history = window.history;
|
||||
const oldState = getHistoryState();
|
||||
// 只更新 state 而不改变 URL
|
||||
history.replaceState({ ...oldState, ...state }, '', window.location.href);
|
||||
history.replaceState({ ...oldState, ...state }, '', url || window.location.href);
|
||||
};
|
||||
|
||||
/**
|
||||
* 清除history state
|
||||
*/
|
||||
export const clearHistoryState = () => {
|
||||
export const clearHistoryState = (url?: string) => {
|
||||
const history = window.history;
|
||||
history.replaceState({}, '', window.location.href);
|
||||
history.replaceState({}, '', url || window.location.href);
|
||||
};
|
||||
|
||||
14
src/web.ts
14
src/web.ts
@@ -1,14 +0,0 @@
|
||||
import { Page } from './page.ts';
|
||||
import * as WebEnv from './web-env.ts';
|
||||
|
||||
import { nanoid } from 'nanoid';
|
||||
import * as PathToREgexp from 'path-to-regexp';
|
||||
import * as Load from '@kevisual/load/browser';
|
||||
|
||||
export const WebModule = {
|
||||
Page,
|
||||
WebEnv,
|
||||
nanoid,
|
||||
PathToREgexp,
|
||||
Load,
|
||||
};
|
||||
Reference in New Issue
Block a user