Angular中Core/Shared/Feature模式下Models的存放位置咨询
核心原则:按复用范围划分
Models的存放没有绝对统一的标准,但行业内普遍遵循**"复用范围决定存放位置"**的原则,以下是具体场景的处理方式:
仅单个Feature模块使用的Models:直接放在对应Feature模块内,比如
src/app/features/user/models/user.model.ts。这样能保持Feature模块的独立性,避免不必要的跨模块依赖,也符合Feature模块"高内聚"的设计目标。多个Feature模块需要复用的Models:放在Shared模块中。Shared模块的定位就是存放通用、无业务耦合的可复用代码,比如基础的分页模型
Pagination.model.ts、通用响应结构ApiResponse.model.ts这类不绑定特定业务的模型,适合放在Shared里供各Feature模块导入使用。与全局单例服务强绑定、仅全局使用的Models:可以放在Core模块。比如如果你的Core模块里有一个全局的
AuthService,对应的UserSession.model.ts只在这个服务和全局拦截器等核心逻辑里用,不会被Feature模块直接引用,这种情况下放在Core模块是合理的。但要注意,Core模块的Models必须是全局唯一依赖、无复用需求的,别把能放到Shared的通用模型塞到Core里,避免Core模块过度膨胀。
避坑提醒
别迷信"Models只能放Feature"的极端说法,这种观点忽略了复用场景的需求。关键是要区分模型的复用性和业务耦合度:
- 业务专属、不可复用的→Feature
- 通用、跨业务复用的→Shared
- 全局核心逻辑专属、无复用场景的→Core
内容的提问来源于stack exchange,提问作者liberlux
相关产品推荐
相关产品推荐

