Repolode
ash-project

ash-project/ash

一个声明式、可扩展的 Elixir 应用框架,围绕资源、动作和策略构建应用。

Star
2,540
Fork
463
未关闭 Issue
104
最近提交
15小时前

这是什么?

Ash 是一个用于构建 Elixir 应用的框架,开发者通过资源来描述业务领域,包括属性、关系、动作、校验和授权规则。框架会根据这些声明处理大部分重复的数据访问和业务逻辑代码,减少手写样板代码的工作量。

资源基于 Spark DSL 定义,并按领域(domain)组织。Ash 支持多种数据层,其中 AshPostgres 对接 PostgreSQL,AshSqlite 对接 SQLite,ETS 和 Mnesia 为内置支持。生态中的配套包还提供 JSON:API、GraphQL、用户认证、基于 Oban 的后台任务、状态机、资源归档,以及用于结构化输出、MCP 和向量化的 AshAI。

框架围绕动作、授权策略和 actor 等明确的概念展开,让行为逻辑集中可见。项目提供入门教程、主题指南、操作指南以及由源码生成的 DSL 参考文档。

核心功能

  • 01通过 DSL 声明资源的属性、关系、动作和校验规则。
  • 02将资源组织到领域中,并支持 PostgreSQL、SQLite 等多种数据层。
  • 03使用策略和 actor 定义授权逻辑。
  • 04通过配套包提供 JSON:API 和 GraphQL 接口。
  • 05借助生态包实现用户认证、后台任务、状态机和数据归档。

适用场景

  • 构建带有复杂领域模型和统一授权规则的 Phoenix Web 应用。
  • 将基于资源的后端以 JSON:API 或 GraphQL 服务的形式对外提供。
  • 为现有业务实体添加后台任务或状态机。
  • 在 Elixir 项目中实现使用结构化输出或 MCP 的 AI 功能。

收录于专题

标签

常见问题

ash 是什么?
一个声明式、可扩展的 Elixir 应用框架,围绕资源、动作和策略构建应用。 Ash 是一个用于构建 Elixir 应用的框架,开发者通过资源来描述业务领域,包括属性、关系、动作、校验和授权规则。框架会根据这些声明处理大部分重复的数据访问和业务逻辑代码,减少手写样板代码的工作量。
ash 可以免费使用吗?用的什么许可证?
ash 没有声明许可证。代码虽然公开,但没有许可证就没有明确的使用授权,正式使用前建议先联系作者。
ash 还在维护吗?
活跃维护中。ash 最近一次提交是在 2026年10月22日。
ash 适合用来做什么?
构建带有复杂领域模型和统一授权规则的 Phoenix Web 应用。 将基于资源的后端以 JSON:API 或 GraphQL 服务的形式对外提供。 为现有业务实体添加后台任务或状态机。 在 Elixir 项目中实现使用结构化输出或 MCP 的 AI 功能。
在哪里获取 ash?
源代码和安装说明在 GitHub 上:https://github.com/ash-project/ash

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目