From 1e16236e13d8e03a8767d28f02b601bdea74d3dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BC=96=E7=A0=81=E7=8C=BF?= Date: Fri, 19 Sep 2025 02:20:18 +0800 Subject: [PATCH] =?UTF-8?q?=E5=9F=BA=E4=BA=8EVue3+OOP+JSX=E6=94=B9?= =?UTF-8?q?=E9=80=A0=E9=A1=B9=E7=9B=AE=E4=BB=A3=E7=A0=81=EF=BC=8C=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0pnpm=E7=BB=9F=E4=B8=80=E7=AE=A1=E7=90=86=E4=BE=9D?= =?UTF-8?q?=E8=B5=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + front-end/app-product/vite.config.ts | 6 +- front-end/app-shared/vite.config.ts | 2 +- front-end/main-app/package.json | 15 ++- front-end/main-app/src/app/App.tsx | 14 +-- .../main-app/src/app/components/Header.tsx | 93 +++++++++---------- front-end/main-app/src/app/main.ts | 26 ++++-- front-end/main-app/src/app/router/Config.ts | 25 +++++ front-end/main-app/src/app/router/index.ts | 26 +----- front-end/main-app/src/app/views/About.tsx | 18 ++-- front-end/main-app/src/app/views/Home.tsx | 86 ++++++++--------- .../main-app/src/shared/types/ shims-tsx.d.ts | 46 +++++++++ .../main-app/src/shared/types/shims-vue.d.ts | 5 + front-end/main-app/tsconfig.app.json | 34 ------- front-end/main-app/tsconfig.json | 49 ++++++++-- front-end/main-app/tsconfig.node.json | 19 ---- front-end/main-app/vite.config.ts | 9 +- front-end/pnpm-workspace.yaml | 4 + 18 files changed, 254 insertions(+), 224 deletions(-) create mode 100644 front-end/main-app/src/app/router/Config.ts create mode 100644 front-end/main-app/src/shared/types/ shims-tsx.d.ts create mode 100644 front-end/main-app/src/shared/types/shims-vue.d.ts delete mode 100644 front-end/main-app/tsconfig.app.json delete mode 100644 front-end/main-app/tsconfig.node.json create mode 100644 front-end/pnpm-workspace.yaml diff --git a/README.md b/README.md index 41d7724..8f842de 100644 --- a/README.md +++ b/README.md @@ -26,6 +26,7 @@ - [x] 基于DDD理念改造 - [x] 基于 vite-plugin-federation 拆分领域模块为联邦模块,实现微前端 +- [x] 基于Vue3+OOP+JSX改造项目代码,让项目更适合开发和维护 - [ ] 领域模块实现 docker 自动化构建部署上线 - [ ] Deno集成GraphQL diff --git a/front-end/app-product/vite.config.ts b/front-end/app-product/vite.config.ts index fa81816..d3f062a 100644 --- a/front-end/app-product/vite.config.ts +++ b/front-end/app-product/vite.config.ts @@ -22,9 +22,9 @@ export default defineConfig({ './ProductRouter': './src/features/product/router/index.ts' // 商品路由 }, shared: { - vue: {generate: false, requiredVersion: '^3.5.18'}, - 'vue-router': { generate:false, requiredVersion: '^4.0.6' }, - pinia: { generate:false, requiredVersion: '^3.0.3' } + vue: {import: false, generate: false, requiredVersion: '^3.5.18'}, + 'vue-router': {import: false, generate: false, requiredVersion: '^4.0.6'}, + pinia: {import: false, generate: false, requiredVersion: '^3.0.3'}, } }), vue(), diff --git a/front-end/app-shared/vite.config.ts b/front-end/app-shared/vite.config.ts index a3c0664..47f603b 100644 --- a/front-end/app-shared/vite.config.ts +++ b/front-end/app-shared/vite.config.ts @@ -17,7 +17,7 @@ export default defineConfig({ "./utils": "./src/utils/index.ts", }, shared: { - axios: {generate: false, requiredVersion: '^1.12.2'} + axios: {requiredVersion: '^1.12.2'} } }) ], diff --git a/front-end/main-app/package.json b/front-end/main-app/package.json index bc5cc9f..e2eee58 100644 --- a/front-end/main-app/package.json +++ b/front-end/main-app/package.json @@ -1,5 +1,5 @@ { - "name": "vue-project", + "name": "main-app", "version": "0.0.0", "private": true, "type": "module", @@ -19,16 +19,15 @@ "vue-router": "^4.0.6" }, "devDependencies": { + "@abraham/reflection": "^0.13.0", "@originjs/vite-plugin-federation": "^1.4.1", - "@tsconfig/node22": "^22.0.2", - "@types/node": "^22.16.5", - "@vitejs/plugin-vue": "^6.0.1", - "@vitejs/plugin-vue-jsx": "^5.0.1", - "@vue/tsconfig": "^0.7.0", - "npm-run-all2": "^8.0.4", + "@types/node": "^24.5.2", + "@vue3-oop/plugin-vue-jsx": "^1.5.1", + "injection-js": "^2.5.0", + "tslib": "^2.8.1", "typescript": "~5.8.0", "vite": "^7.0.6", "vite-plugin-vue-devtools": "^8.0.0", - "vue-tsc": "^3.0.4" + "vue3-oop": "^1.2.1" } } diff --git a/front-end/main-app/src/app/App.tsx b/front-end/main-app/src/app/App.tsx index e7661d1..20e7621 100644 --- a/front-end/main-app/src/app/App.tsx +++ b/front-end/main-app/src/app/App.tsx @@ -1,10 +1,10 @@ -import { defineComponent } from 'vue' -import { RouterLink, RouterView } from "vue-router"; +import {Component, VueComponent} from 'vue3-oop' +import {RouterLink, RouterView} from "vue-router"; -export default defineComponent({ - name: 'App', - setup() { - return () => ( +@Component() +export class App extends VueComponent { + render() { + return ( <>