用途:Phoenix 构建在 Elixir 与 BEAM 虚拟机之上,用于开发容错、实时的 Web 应用;LiveView 将 UI 状态保留在服务端,通过 WebSocket 传输 HTML 差异,尽量减少 JavaScript。
主要能力:OTP 监督树隔离并重启 Web、数据与后台进程;Contexts 以 Ecto schema 与查询表达领域边界;LiveView 服务端渲染并同步 UI;PubSub 与 Presence 支持广播更新、在线状态与协作;BEAM 提供轻量进程、监督树与软实时调度。
使用方式:用 asdf 安装 Erlang 与 Elixir,执行 mix archive.install hex phx_new 安装生成器,再用 mix phx.new my_app --live 创建包含 LiveView、Ecto 与 esbuild 的项目,随后 mix deps.get、mix ecto.create、mix phx.server 启动。项目核心包括 application.ex(监督树)、endpoint.ex、router.ex、Contexts 与测试辅助模块。LiveView 通过 mount/3、handle_event/3 与 HEEx 模板实现;可用 stream/3 处理大列表、assign_new/3 延迟计算、handle_params/3 处理 URL 状态。PubSub 在 connected?/1 检查后订阅,Presence 用于在线与输入提示。测试使用 mix test 与 ConnCase、DataCase、Phoenix.LiveViewTest。发布用 MIX_ENV=prod mix release,运行时配置见 config/runtime.exs,可用 PHX_SERVER=true 启动;集群可搭配 libcluster,后台任务可用 Oban。
适用场景与限制:适合需要实时交互、容错与低客户端 JS 的 Web 应用。资料提示的常见陷阱包括忘记连接后订阅 PubSub、在 render 中执行重活、多步写入未用 Ecto.Multi、长 NIF 阻塞调度器、无监督滥用 ETS。参考资料未提供具体收费与价格信息。