Краткий справочник

Шпаргалка по фреймворку Phoenix

Полное справочное руководство по Phoenix на Elixir: быстрый старт, структура проекта, маршрутизация, пайплайны Plug.Conn, контроллеры и генераторы.

· Опубликовано

Phoenix — производительный и надежный веб-фреймворк для языка Elixir, работающий на базе Erlang BEAM.

Быстрый старт (Quickstart)

# Установка менеджера пакетов Hex и установщика Phoenix
mix local.hex
mix archive.install hex phx_new

# Создание нового приложения Phoenix с PostgreSQL
mix phx.new my_app

# Запуск интерактивного сервера разработки
mix phx.server

Структура каталогов приложения (Application Directory Layout)

my_app/
├── assets/          # Фронтенд-ресурсы (esbuild, Tailwind CSS)
├── config/          # Конфигурация окружений (dev, test, prod)
├── lib/
│   ├── my_app/      # Основная бизнес-логика и схемы Ecto
│   ├── my_app.ex
│   └── my_app_web/  # Веб-слой (контроллеры, представления, маршрутизатор)
│       ├── controllers/
│       ├── router.ex
│       └── endpoint.ex
├── priv/
│   └── repo/        # Миграции базы данных и начальные данные
└── test/            # Наборы тестов ExUnit

Контроллеры и пайплайны (Controllers & Pipelines)

Phoenix использует Plug.Conn в качестве универсальной структуры преобразования HTTP-запросов:

defmodule MyAppWeb.UserController do
  use MyAppWeb, :controller

  def show(conn, %{"id" => id}) do
    user = MyApp.Accounts.get_user!(id)

    conn
    |> put_status(200)
    |> render("show.html", user: user)
  end

  def api_index(conn, _params) do
    users = MyApp.Accounts.list_users()
    json(conn, %{data: users})
  end
end

Генераторы и контексты (Generators & Contexts)

# Генерация полного HTML CRUD-контекста, схемы и контроллера
mix phx.gen.html Accounts User users name:string email:string:unique

# Генерация ресурсов для JSON API
mix phx.gen.json Catalog Product products title:string price:decimal

# Запуск миграций базы данных
mix ecto.migrate

Связанные руководства

Связанные темы