完成对app-shared 的拆分

This commit is contained in:
编码猿
2025-09-18 04:12:50 +08:00
parent 327e80d71e
commit cc23a6e1f0
12 changed files with 43 additions and 39 deletions

View File

@@ -7,10 +7,9 @@
"node": "^20.19.0 || >=22.12.0"
},
"scripts": {
"dev": "vite --port 5000 --strictPort",
"serve": "vite preview --port 5000 --strictPort",
"build": "vite build",
"all": "npm run build && npm run serve",
"dev": "concurrently \"npm run build\" \"npm run serve\"",
"serve": "vite preview --port 1300 --strictPort",
"build": "vite build --watch",
"type-check": "vue-tsc --build"
},
"dependencies": {

View File

@@ -1,36 +0,0 @@
// 从商品联邦模块导入领域层资源
import {HttpProductRepository, ProductApplicationService, ProductRepository} from 'product/ProductDomain';
/**
* 商品领域的依赖注入配置
* 将 接口 与 具体实现 绑定
*
* 优点:是一个依赖工厂,它隐藏了对象创建的细节,
* 让业务代码只需要关心 “做什么”,而不用关心 “依赖从哪里来”
* 所有依赖关系都在di目录下集中配置,一目了然,后续维护时能快速找到所有依赖的创建逻辑。
*
* 松耦合:
* 业务代码(ProductApplicationService)只依赖抽象接口(ProductRepository),
* 不依赖具体实现。如果未来需要改用其他数据来源(比如 WebSocket),
* 只需修改bindProductRepository的返回值,无需改动业务逻辑。
*
* 易于测试:
* 测试时可以临时替换为模拟实现
* productModule.bindProductRepository = () => new MockProductRepository();
* 这样测试就可以脱离真实 API,使用预设的模拟数据。
*/
export const product = {
// 绑定 仓储抽象接口 到 HTTP具体实现
bindProductRepository: (): ProductRepository => {
// return new MockProductRepository 直接从真实接口数据改为测试模拟数据
return new HttpProductRepository;
},
// 创建应用服务实例
createProductApplicationService: (): ProductApplicationService => {
return new ProductApplicationService(
product.bindProductRepository()
);
}
}

View File

@@ -1,7 +1,6 @@
import {createRouter, createWebHistory, RouteRecordRaw} from 'vue-router'
import {productRouter} from 'product/ProductRouter'
console.log("productRouter: ", productRouter)
const baseRouter: Array<RouteRecordRaw> = [
{

View File

@@ -8,6 +8,11 @@ import federation from '@originjs/vite-plugin-federation';
// https://vite.dev/config/
export default defineConfig({
server: {
port: 1300,
host: '0.0.0.0',
strictPort: true,
},
plugins: [
vue(),
vueJsx(),
@@ -15,11 +20,8 @@ export default defineConfig({
federation({
name: 'mainApp', // 主应用模块名(联邦模块需通过此名引用)
remotes: { // 配置远程联邦模块地址(开发/生产需对应)
product: 'http://localhost:5001/assets/remoteEntry.js',
shared: 'http://localhost:5555/assets/remoteEntry.js'
},
exposes: {
"./productService": "./src/app/di/productModule.ts",
product: 'http://localhost:1301/assets/remoteEntry.js',
shared: 'http://localhost:1333/assets/remoteEntry.js'
},
shared: {
vue: { requiredVersion: '^3.5.18' },