Phoenix ist ein produktives und zuverlaessiges Web-Framework fuer die Elixir- und Erlang BEAM-Laufzeitumgebung.
Schnellstart (Quickstart)
# Hex-Paketmanager und Phoenix-Installer installieren
mix local.hex
mix archive.install hex phx_new
# Neue Phoenix-Applikation mit PostgreSQL generieren
mix phx.new my_app
# Interaktiven Entwicklungsserver starten
mix phx.server
Projektverzeichnis-Layout (Application Directory Layout)
my_app/
├── assets/ # Frontend-Assets (esbuild, Tailwind CSS)
├── config/ # Umgebungskonfiguration (dev, test, prod)
├── lib/
│ ├── my_app/ # Kerngeschaeftslogik und Ecto-Schemas
│ ├── my_app.ex
│ └── my_app_web/ # Web-Praesentationsschicht (Controller, Views, Router)
│ ├── controllers/
│ ├── router.ex
│ └── endpoint.ex
├── priv/
│ └── repo/ # Datenbankmigrationen und Seed-Daten
└── test/ # ExUnit-Testsuites
Controller und Pipelines (Controllers & Pipelines)
Phoenix nutzt Plug.Conn als einheitliche HTTP-Transformationsstruktur:
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
Generatoren und Kontexte (Generators & Contexts)
# Vollstaendigen HTML-CRUD-Kontext, Schema und Controller generieren
mix phx.gen.html Accounts User users name:string email:string:unique
# JSON-API-Ressourcen generieren
mix phx.gen.json Catalog Product products title:string price:decimal
# Datenbankmigrationen ausfuehren
mix ecto.migrate