30 秒看懂
Christian Alexander 采访 Ash 维护者 Rebecca Le 和 Zach Daniel,讨论领域建模教学、测试支持、Cinder 库以及强大声明式抽象的权衡。
- 1在上下文中教学书在示例应用需要时引入框架功能。
- 2可扩展性是核心目标资源和动作支持 API、事件及其他集成扩展。
- 3写书推动测试改进尝试教授测试促成了框架中的生成器支持。
- 4Cinder 抽象重复的表格工作Le 构建可复用库来过滤、搜索和展示数据。
- 5理解强大的默认行为便捷的 API 生成仍要求理解暴露范围和授权。
要点建议
- 书先教授领域建模,再逐步加入身份验证、策略和测试。
- Ash 可扩展的资源与动作支持多种接口和集成。
- 编写测试章节促成了新的生成器工具。
- 强大的抽象减少重复工作,但仍需要理解安全与行为。
按章节阅读整理后的全文
通过应用学习 Ash
作者解释书中的渐进学习路径。
Christian Alexander 采访 Elixir Ash 框架书籍的合著者 Rebecca Le 和 Zach Daniel。他们讨论框架的学习、可扩展性、测试及其社区库。
Le 说她从 1.x 早期开始使用 Ash,参与核心团队、文档和用户界面库,包括 Cinder 数据表库。Daniel 回顾了构建 Ash 的过程,以及 Le 团队在客户项目中使用早期版本时提出的建设性反馈。
Alexander 说自己曾多次学习 Ash 遇挫,因为在理解应用之前就从关系和权限入手。书中的渐进路径帮助了他。Le 说这是有意设计的:框架的组件都存在,但学习者需要看到它们如何组合。
书先介绍领域建模,再随着示例应用的需要引入身份验证、策略和测试。Le 强调,即使这些不是最先教授的概念,也应在部署和接触真实用户前加入安全措施与测试。
音乐应用 Tunez 让书有空间展示关系、测试和原子操作,而不需要读者创建大量内容。Le 说作者在其他示例和功能之间作了取舍,以控制篇幅。
扩展与测试
稳定核心和写书推动的改进支持生态发展。
Alexander 观察到,熟悉的基础构件可以支持后续功能,例如 TypeScript 绑定和 AI 工具。Daniel 说,可扩展性是明确的早期目标:扩展可以增加能力或改变动作的工作方式,而核心概念仍然有用。
由于生态变化很快,作者曾怀疑是否太早编写基础教材。Daniel 说他们希望书中的例子保持稳定,而随着选项和扩展增加,核心概念大体保持了稳定。
Daniel 回忆,有些用户读完策略指南后仍难以应用。完整参考文档很有价值,但通过具体应用建立学习路径,可以让抽象规则更容易与实际决策联系起来。
Daniel 把具有强默认约定的框架比作预先准备好的套餐,把 Ash 比作可自选配料的餐碗:团队可以组合扩展以适应自己的场景。他以事件驱动扩展为例,说明扩展可以改变动作的实现方式。
写书也改变了框架。Le 说,作者最初没有加入测试指导,因为 Ash 应用本身是普通 Elixir 应用,但用户反复询问如何测试动作。尝试解释这一过程,最终促成了基于生成器的测试数据支持和测试章节。
Daniel 说,当他试图解释现有测试方法时,意识到缺少工具。团队没有只是记录一个不理想的流程,而是构建了让方法更易于使用和教学的功能。
Alexander 认为测试核心动作很有价值,因为不同界面和 API 都建立在它们之上。几位嘉宾介绍声明式策略和动作如何提供共同基础,同时应用所依赖的行为仍需要实际测试。
Cinder 与共享构件
几位嘉宾讨论可复用表格和社区贡献。
Le 解释了自己为什么构建 Cinder:应用反复需要可搜索、过滤和分页的表格。她制作了一个能够组合过滤条件、生成界面元素和查询数据的抽象原型;此后该库增加了更多自定义能力。
Daniel 说,他的团队用 Cinder 替换了内部表格实现并删除了一些代码。他认为使用自己没有设计的社区贡献很有成就感,并以 Ash Authentication 作为生态共享工作的另一个例子。
Alexander 介绍将应用迁移到 Ash 的经历:把数据库表表示为资源,并用领域、资源及访问模式替代大型 context 模块。按他的经验,共同抽象让添加功能更容易,但工作仍依赖对模型的理解。
学习曲线与强大抽象
嵌套表单、API 和 AI 辅助展示其中的权衡。
几位嘉宾认为,Ash 的 DSL 和概念带来前期学习曲线。Le 将其与容易入门、但需求复杂后可能更难使用的工具进行对比。他们说,开发者理解资源、动作和策略后,这些概念会在不同扩展中反复出现。
Alexander 强调书中音乐示例的嵌套表单:使用 Ash Phoenix 辅助工具,可以在创建专辑时创建歌曲。Daniel 又以 API 生成为例,说明如何从领域模型派生接口。
Daniel 提醒,一行将功能暴露为 API 的代码可能做很多事。这种便利很强大,但工程师需要理解它暴露了什么,以及授权如何生效。他用光剑作比喻,表达学习投入和误用可能带来的后果。
Daniel 表示,AI 助手和已有示例帮助其公司的新工程师更快学习 Ash 与 Elixir,并说社区里的基础问题变少了。这些是他对团队和社区的观察,而非对学习效果的受控测量。
Alexander 最后建议学习者跟随书中的步骤构建示例,观察各个部分如何连接。作者感谢主持人和观众。
同频道的其他文章
39:12EN → 简体中文
22:33EN → 简体中文
34:11EN → 简体中文
28:15EN → 简体中文
46:36EN → 简体中文
38:07EN → 简体中文