refactor: 应用参考工程代码模式,优化启动流程和架构

- 新增 SplashPage:启动页,2秒后跳转到 Index
- 新增 MainPage:独立主页组件,含 Tab 导航 + 宽屏/窄屏自适应
- 简化 Index.ets:纯路由入口,初始化数据库,加载 MainPage
- EntryAbility:加载 SplashPage 而非直接加载 Index
- 新增 PageContext:NavPathStack 路由管理(参考工程模式)
- 新增 BreakpointSystem:响应式断点系统 xs/sm/md/lg/xl
- 新增 BaseViewModel:ViewModel 基类,含 attach/detach/dispose 生命周期
- 更新 common/Index.ets 导出新模块
- 更新 main_pages.json 注册 SplashPage 和 MainPage
This commit is contained in:
root
2026-05-01 09:15:36 +08:00
parent 5916d2749c
commit ab3d910387
9 changed files with 325 additions and 112 deletions

View File

@ -0,0 +1,54 @@
export interface RouterParam {
routerName: string;
param?: object;
}
export interface IPageContext {
openPage(data: RouterParam, animated?: boolean): void;
popPage(animated?: boolean): void;
replacePage(data: RouterParam, animated?: boolean): void;
}
export class PageContext implements IPageContext {
private readonly pathStack: NavPathStack;
constructor() {
this.pathStack = new NavPathStack();
}
public get navPathStack(): NavPathStack {
return this.pathStack;
}
public replacePage(data: RouterParam, animated: boolean = true): void {
try {
this.pathStack.replacePath({ name: data.routerName, param: data.param }, animated);
} catch (err) {
console.error('Open Page ' + data.routerName + ' failed. ' + err.code + ' ' + err.message);
}
}
public openPage(data: RouterParam, animated: boolean = true): void {
try {
this.pathStack.pushPath({ name: data.routerName, param: data.param }, animated);
} catch (err) {
console.error('Open Page ' + data.routerName + ' failed. ' + err.code + ' ' + err.message);
}
}
public popPage(animated: boolean = true): void {
try {
this.pathStack.pop(animated);
} catch (err) {
console.error('Pop Page failed. ' + err.code + ' ' + err.message);
}
}
public popPageByIndex(index: number, animated: boolean = true): void {
this.pathStack.popToIndex(index, animated);
}
public clear(animated: boolean = true): void {
this.pathStack.clear(animated);
}
}