项目

定制现有模块

ABP框架设计支持构建完全 模块化应用 和系统,同时提供了一系列 预构建应用模块 ,这些模块可直接用于各类应用程序。

例如,您可以复用 身份管理模块 为应用添加用户、角色和权限管理功能。应用启动模板 已预装了身份管理及其他基础模块。

复用应用模块

您有两种复用应用模块的方式:

通过包引用

您可以将相关模块的NuGetNPM包引用添加到应用中,并根据模块文档进行配置以集成到您的应用中。

如前所述,应用启动模板预装了一些基础模块,这些模块以NuGet和NPM包引用的形式存在。

这种方式具有以下优势:

  • 解决方案保持简洁,仅包含自有应用代码
  • 当模块新版本发布时可轻松升级abp update CLI 命令 使升级更加便捷,从而持续获得新功能和错误修复

但存在一个缺点:

  • 由于模块源代码不在解决方案中,您可能无法定制模块

本文档将阐述如何在不修改源代码的情况下定制或扩展依赖模块。虽然相比直接修改源代码存在限制,但仍提供多种有效的定制方式。

若无需对预构建模块进行重大改动,推荐采用包引用方式复用模块。

包含源代码

若需对预构建模块进行重大修改或添加主要功能,而现有扩展点无法满足需求时,可考虑直接操作依赖模块的源代码。

此时通常需要将模块源代码加入解决方案,并将解决方案中所有包引用替换为对应的本地项目引用。ABP CLIadd-module命令可通过--with-source-code参数自动完成此过程。该命令还能将已通过NuGet包安装的模块替换为源代码形式。

分离模块解决方案

您可能不希望将模块源代码直接加入解决方案。每个模块包含10多个项目文件,添加多个模块会影响解决方案的加载速度和开发时间。此外,若不同开发团队负责不同模块,您可能不希望应用开发团队接触模块代码。

无论如何,您可以为目标模块创建独立解决方案,并通过项目引用方式在解决方案外依赖该模块。abp代码库即采用此方式。

需要注意的是:Visual Studio对此类支持不佳(不支持引用解决方案目录外的本地项目)。如果在构建应用(依赖外部模块)时出现错误,请在Visual Studio中打开应用解决方案后,在命令行中运行dotnet restore

将定制模块发布为包

另一种方案是将模块源代码重新打包(作为NuGet/NPM包)并通过包引用使用。例如,可为公司搭建本地私有NuGet/NPM服务器。

模块定制/扩展方法

本节针对以NuGet/NPM包引用方式使用预构建应用模块的场景提供建议方案。以下文档详细说明了不同维度的定制/扩展方法:

模块实体扩展系统

模块实体扩展系统是主要的高级扩展系统,允许为依赖模块的现有实体定义新属性。该系统可在单一节点自动为实体、数据库、HTTP API和用户界面添加属性

详见 模块实体扩展文档 了解使用方法。

扩展实体

若仅需在现有实体上获取/设置额外数据,请参阅 扩展实体 文档。

重写服务/组件

除扩展系统外,您还可部分或完全重写任何服务或用户界面页面/组件:

附加UI扩展点

还存在一些底层系统可用于控制模块定义的实体操作、表格列和页面工具栏:

实体操作

实体操作扩展系统允许在用户界面的实体操作菜单中添加新操作:

数据表格列扩展

数据表格列扩展系统允许在用户界面的数据表格中添加新列:

页面工具栏

页面工具栏系统允许向页面工具栏添加组件:

其他

另请参阅

同时参考以下文档:

  • 参阅 本地化文档 了解如何扩展现有本地化资源
  • 参阅 设置文档 了解如何修改依赖模块的设置定义
  • 参阅 授权文档 了解如何修改依赖模块的权限定义
在本文档中