全栈Angular PWA应用angular-contacts-app-example:用NgRx + NestJS打造离线通讯录的完整教程
全栈Angular PWA应用angular-contacts-app-example用NgRx NestJS打造离线通讯录的完整教程【免费下载链接】angular-contacts-app-exampleFull Stack Angular PWA example app with NgRx NestJS项目地址: https://gitcode.com/gh_mirrors/an/angular-contacts-app-exampleangular-contacts-app-example是一个全栈 Angular PWA渐进式 Web 应用通讯录示例项目前端基于 Angular 9 NgRx Store/Effects/Entity 管理状态后端由 NestJS 提供 REST 与 WebSocket 服务。它支持离线访问、实时同步联系人是学习现代 Angular 工程化开发的优秀开源教程。 项目亮点一览特性说明 PWA 离线能力通过 Service Worker 注册ngsw-worker.js生产环境启用后应用可离线使用 NgRx 分片状态管理使用StoreModule.forFeature按需懒加载 Reducer 与 Effects⚡ Entity 适配器用ngrx/entity极简实现联系人增删改查 WebSocket 实时同步通过 Socket.IO 推送新建/修改/删除事件多端实时联动 一键部署Docker Compose 拉起 Postgres、Redis、NestJS API 与前端容器PWA 的注册入口位于 app.module.ts仅在生产环境生效保证开发体验不受影响。 快速上手一键安装步骤1️⃣ 克隆仓库git clone https://gitcode.com/gh_mirrors/an/angular-contacts-app-example cd angular-contacts-app-example2️⃣ Docker Compose 启动完整全栈环境项目内置 docker-compose.yml一条命令即可启动 Postgres 数据库、Redis、NestJS API3000 端口和前端4000 端口docker-compose up --build启动后访问http://localhost:4000即可看到通讯录应用。 不想用 Docker 也可以单独运行 NestJS 后端服务再用ng serve启动前端开发服务器4200 端口支持热重载。3️⃣ 前端容器如何构建Dockerfile 采用经典的多阶段构建第一阶段用 Node 构建 Angular 生产包第二阶段把产物交给 Nginx 托管配置见 nginx/default.conf镜像小巧、上线友好。️ 架构拆解这套全栈 Angular 应用是如何运转的 前端Angular PWA 分层结构应用按「核心层 视图层」组织core 层共享 UI 组件联系人列表、表单、详情、工具栏、模型定义与公共模块见 shared.module.tsviews/contacts 层懒加载的路由模块包含列表、新建、详情、编辑四个页面路由与标题解析器见 contacts-routing.module.ts联系人数据模型极简只包含姓名、邮箱、电话三个字段定义在 contact.ts非常适合新手阅读。 NgRx Store集中式状态管理的精髓状态管理采用 NgRx 分片fractal模式组件 ──dispatch──▶ Actions ──▶ Effects(HTTP/WebSocket) ──▶ 后端 ▲ │ └────────── Selectors ◀── Reducer(更新状态) ◀────────┘Actionscontacts-actions.ts 定义了loadAll、create、update、remove等动作Reducer Entitycontacts-reducer.ts 用createEntityAdapter管理实体集合一行addAll/upsertOne/removeOne即可完成 CRUD大幅减少样板代码Facadecontacts.store-facade.ts 为组件提供loadContact()、createContact()等简洁方法组件不直接碰 Store可读性极佳UI 状态当前页面标题等 UI 状态由独立的 ui-reducer.ts 管理⚡ EffectsHTTP WebSocket 副作用统一管理contacts-effects.ts 是项目的精华所在——所有副作用集中在一处收到loadAll动作 → 请求 REST 接口 → 派发loadAllSuccess创建联系人失败时自动catchError并派发failure动作同时 contacts-socket.service.ts 封装了 Socket.IO 连接把LIVE_CREATED、LIVE_UPDATED、LIVE_DELETED事件转成响应式流让另一个浏览器里的改动实时同步到当前页面——这正是全栈实时应用的标准玩法。 核心目录导览路径作用src/app/app.module.ts根模块初始化 Store、Effects 与 PWA Service Workersrc/app/views/contacts/store/联系人分片的 Actions、Effects、Reducer、Facadesrc/app/views/contacts/services/HTTP 服务与 Socket.IO 服务含 mock 服务src/app/core/models/联系人模型与事件类型定义docker-compose.yml全栈一键部署编排package.json依赖清单NgRx 全家桶、ngx-socket-io、Bootstrap 适合谁学能学到什么Angular 新手完整的 CLI 工程结构、懒加载路由、响应式表单实战状态管理学习者Store/Effects/Entity 分片模式的标准范例配合StoreDevtoolsModule可在开发者工具里观察状态流转全栈开发者前端 PWA 后端 NestJS Docker 容器化部署的完整闭环实时应用爱好者REST WebSocket 双通道同步的经典实现✅ 小结angular-contacts-app-example用不到 1000 行的核心代码演示了「Angular PWA NgRx 分片状态 NestJS 实时后端」这一现代全栈技术组合的完整落地方式。克隆下来跑一遍再顺着 Facade → Effects → Reducer 的主线读源码一个下午你就能掌握企业级 Angular 应用的架构精髓。动手试试吧【免费下载链接】angular-contacts-app-exampleFull Stack Angular PWA example app with NgRx NestJS项目地址: https://gitcode.com/gh_mirrors/an/angular-contacts-app-example创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考