Phoenix e un framework web produttivo e affidabile sviluppato sull'ambiente BEAM di Elixir ed Erlang.
Guida rapida (Quickstart)
# Installare il gestore di pacchetti Hex e l'installer Phoenix
mix local.hex
mix archive.install hex phx_new
# Generare nuova applicazione Phoenix con PostgreSQL
mix phx.new my_app
# Avviare il server di sviluppo interattivo
mix phx.server
Struttura delle directory (Application Directory Layout)
my_app/
├── assets/ # Asset frontend (esbuild, Tailwind CSS)
├── config/ # Configurazione dell'ambiente (dev, test, prod)
├── lib/
│ ├── my_app/ # Logica di business e schemi Ecto
│ ├── my_app.ex
│ └── my_app_web/ # Livello web (controller, viste, router)
│ ├── controllers/
│ ├── router.ex
│ └── endpoint.ex
├── priv/
│ └── repo/ # Migrazioni del database e dati di seed
└── test/ # Suite di test ExUnit
Controller e pipeline (Controllers & Pipelines)
Phoenix utilizza Plug.Conn come struct unificata di trasformazione 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
Generatori e contesti (Generators & Contexts)
# Generare CRUD HTML completo, schema e controller
mix phx.gen.html Accounts User users name:string email:string:unique
# Generare risorse per API JSON
mix phx.gen.json Catalog Product products title:string price:decimal
# Eseguire le migrazioni del database
mix ecto.migrate