Typelevel 入门仪式
Typelevel Rite of Passage
软件工程师的经验。
使用 Typelevel 堆栈在 Scala 3 中构建您自己的全栈产品。
使用 Scala 3 和 Typelevel 堆栈构建全栈应用程序
正如 Scala 改变了我们用函数式编程构建应用程序的方式一样,Typelevel 技术栈也改变了我们构建强大、可测试且可证明正确的 API 的方式。
本课程侧重于功能性 Scala 和实际应用,是与 Cats、Cats Effect 和朋友一起学习全栈 Scala 3 的入门方式。
和我一起向你展示如何使用 Scala 和函数式库的最新发展来构建一个完整的堆栈作业平台。
您将构建什么?
我们将共同构建 Rock the JVM Jobs Board,这是一个集成信用卡的全栈在线工作平台。用户可以创建和管理他们的帐户,发布和查看工作,并申请工作。
我们将从头开始构建应用程序,在后端使用解耦的分层架构,在前端使用 ScalaJS 使用类似 Elm 的架构。
该应用程序包括许多服务器端位,包括身份验证、权限、发送电子邮件、上传图像和向信用卡收费。我们在后端几乎覆盖了完整的测试,并且我们开发了一些具有测试驱动开发(TDD)的核心模块。
前端构建为单页应用程序,如果要添加新页面或功能组件,则可伸缩性进行组织。
有关所涵盖主题的完整列表,请参见下文。
“Real-Life”意味着Real-LIVE
我想把我的代码放在我的嘴边。
您在本课程中学习构建的应用程序已完全部署并位于此处:
jobs.rockthejvm.com
是的,这是一个真正的工作平台,我将亲自为我在 Rock the JVM 的学生使用!
如果你是一家公司,想把你的工作推广到Rock the JVM社区,那就去吧!
在你问之前:是的,我会教你做所有事情,从空目录到部署在你自己的域上。
这甚至不是一门“基于项目”的课程。您将学习构建一个人们可以使用和付费的成熟产品。你可以用你在本课程中学到的知识来建立你的创业公司。
技术栈
Cats
Scala 的函数式编程库。我们将使用它来使我们的代码模块化,以功能来表示。
Cats Effect
Scala 库允许我们使用纯函数式编程编写可组合和高性能的应用程序。
我们执行的每个动作都是用猫效应构建的。
Doobie
Typelevel 库,它允许我们使用类型安全查询来处理数据库。我们将使用 PostgreSQL 作为实际的数据库。
Http4s
使用这个 Typelevel 库,我们将构建具有 JSON 有效负载、自动验证、使用分页等增量内容加载的 REST API,以及管理身份验证、使用 JWT 授权和基于角色的访问控制。
Tyrian
-
一个轻量级的 Scala 3 库,用于单页应用程序,采用纯功能性的方式,Elm 风格。虽然不是“正式”的 Typelevel 项目,但它基于 Cats Effect 和 FS2 来管理应用程序状态。我们的整个前端都是用 Tyrian 构建的:
- 路由
- 身份验证流程
- 收款处
- 错误/成功 UI 状态
- 从后端获取数据
Honorable Mentions
- 用于配置的 PureConfig
- FS2 用于在后端进行增量加载
- FS2 用于前端的 SPA 历史记录管理
- 用于 JWT 授权和 RBAC 的 TSec
- 适用于 JSON 的 Circe
- Log4Cats,用于纯功能日志记录
- ScalaTest 和 TestContainers 封装在 Cats Effect 中
什么是类型级别?
Typelevel 是一组 Scala 库,用于构建健壮、可扩展和高性能的应用程序。
说什么?
Typelevel 的基础是纯函数式编程和 Scala 无与伦比的类型系统。有了这些工具,我们可以让 Scala 编译器对我们有利,这样我们就可以编写更多的模块化代码,最终成为开发人员的工作效率更高、更快乐。
在本课程中,我们将使用所有主要的 Typelevel 工具和库。
本课程如何运作
这门课程是为谁准备的?
希望通过将成熟的产品作为全栈应用程序来扩展其 Scala 技能的 Scala 开发人员。
您应该能够轻松编写任何类型的 Scala 代码,因为我们不讨论 Scala 基础知识。初级和高级 Scala 课程侧重于语言。
您应该已经熟悉猫和猫效应。我们将在课程开始时进行一轮回顾,但我们将更多地关注项目。
前端是用 ScalaJS 和 Tyrian 编写的。与他们的任何经验都很好,但 100% 不需要。
总而言之,本课程适用于
- 任何寻找完整的端到端 Scala 项目的人
- 希望在 Scala 上实现全栈的后端开发人员
- 希望提升技能和职业的 Scala 开发人员
- 任何想在 Scala、全栈架构或函数式编程方面做得更好的人
不确定它是否适合您?100%退款,如果它不适合你 💰
无论如何,不要害怕。我们将共同打造一些伟大的东西。
您将学习和练习的技能
在每个视频中,我们学习一个概念并将其实施到我们的应用程序中。我们有时会反复使用这些来解决新问题。
因为我们构建了一个全栈 Scala 应用程序,所以本课程涵盖了大量内容。以下是您可以期望学习的一些内容:
✓ REST API
✓ 身份验证
✓ 使用 JWT 进行授权
✓ 基于角色的访问控制
✓ 发送电子邮件
✓ 验证/使用户会话无效
✓ 用户输入清理和验证
✓ 信用卡收费
✓ 托管和转换图像
✓ 增量加载和分页
✓ 复杂的后端过滤器
✓ 加载和错误状态
✓ Elm 前端架构
✓ 路由
✓ 异步效果
✓ Webhooks
✓ 分层和解耦模块
✓ 配置
✓ 共享域模型
✓ 测试驱动开发
✓ 嘲笑
✓ 测试容器
✓ 为开发、暂存和生产构建和配置
✓ 使用自定义域进行部署
100%实用
这门课程很长,所以我们不会浪费时间。此屏幕截图显示了您将编写的内容。
与Rock the JVM的任何课程一样,本课程是动手实践的。我们首先回顾了主要类型级库(Cats、Cats Effect、Doobie、Http4s 等)的基础知识,然后我们开始。
我们将从头开始构建项目,从空白目录和基本原则开始。随着我们的代码变得越来越复杂,我们将根据需要进行模块化。
我们将有机地到达我们分离的分层架构,而我从一开始就没有强加任何风格。您会发现它非常可扩展和模块化。
后端的很大一部分是以测试驱动的开发风格编写的。我们也有在实现后编写测试的块,以便您直接感受到差异。无论如何,我们会进行广泛的测试,我们的应用程序将非常强大。
至于前端,我们将从头开始添加 ScalaJS 支持,然后我们将开始为我们的应用程序搭建可伸缩性,以便您可以轻松添加新页面或有状态组件。
我们还将以谨慎的方式设计我们的域,以便前端和后端共享相同的定义,从而消除由于架构不匹配而导致的令人讨厌的错误。
评论(0)