学习目标与课程内容
本课程的概览,以及先修要求和学习条件。
学习目标
本课程中,我们将学习:
-
如何在设计 Elixir 应用时采用分层架构的方法。
-
如何创建 Elixir 的
mix项目。 -
Elixir 中使用的不同数据类型及其优缺点。这将帮助我们在后续做出重要决策。
-
如何使用 OTP GenServer。
-
良好的编码实践,使我们更轻松地构建和使用项目。
-
测试技术,用于测试项目的部分层级。
课程内容
我们将按以下阶段逐步进行:
-
了解我们将用于构建主项目的六个层级的概览。
-
创建一个小型
mix项目,演示一个简单计数器的行为。该项目仅包含六个层级中的三个,以帮助我们理解各层级的工作方式。 -
讨论 Elixir 中使用的以下数据类型:
-
原始类型
-
列表
-
流(Stream)
-
映射与结构体(Map 和 Struct)
-
字符串
-
元组
-
函数
-
-
学习数据层以及函数式语言的特性。
-
创建第二个
mix项目,模拟用户在线答题的行为。 -
确定用于跟踪答题用户的主数据,并使用结构体在项目中存储这些数据。
-
构建该项目的功能核心层,包含利用之前定义在数据层中的数据的函数。
-
学习编写函数时的以下技巧:
-
如何为函数选择合适的名称。
-
如何将代码拆分为多个小函数,每个函数只完成一项特定任务。
-
了解代码中的抽象机制。
-
-
使用
ExUnit(Elixir 内置的单元测试库)对功能核心进行测试。 -
创建边界层,用于管理两个 GenServer:一个用于存储题目,另一个用于答题。
-
创建生命周期层,使用动态监督者来创建和管理答题过程中的进程。这将支持多个用户同时答题,每个用户拥有独立的进程。
-
学习如何使用依赖项、并发处理,以及如何对资源进行池化。这些技术有助于构建工作层。
-
构建第三个
GenServer,实现限时答题功能。 -
学习如何创建一个 poncho 项目来管理不同的依赖项。
-
创建一个 Postgres 表格,用于存储用户的答题结果。
-
了解如何将我们的应用集成到现有框架中,包括:
-
Phoenix Channels
-
LiveView
-
Scenic 项目
-
-
使用相同的
ExUnit库对边界层进行测试。
先修知识
本课程要求具备 Elixir 的基础知识,包括以下概念:
-
mix项目 -
OTP GenServer
-
监督者与进程
系统要求
我们在项目中构建的 mix 项目依赖以下环境:
-
Elixir:1.12.2
-
PostgreSQL 数据库