Phoenix는 Elixir 및 Erlang BEAM 런타임 위에서 동작하는 고생산성, 무결점 신뢰성의 현대 웹 프레임워크입니다.
빠른 시작 (Quickstart)
# Hex 패키지 매니저 및 Phoenix 설치 아카이브 등록
mix local.hex
mix archive.install hex phx_new
# PostgreSQL 연동 신규 Phoenix 애플리케이션 생성
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는 HTTP 요청 변환을 위해 일관된 Plug.Conn 구조체를 사용합니다:
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