Cheat Sheet速查表
跳转到主要内容

Phoenix 速查表

本文根据 Devhints / Phoenix 翻译。代码示例及版本范围沿用原文。原文标注更新日期:2018-03-06。

快速入门

# Install Phoenix
mix local.hex
mix archive.install https://github.com/phoenixframework/archives/raw/master/phx_new.ez
# Create a new project
mix phx.new hello
# Start the application
mix phx.server

请先安装 Erlang、Elixir、Node.js 和 PostgreSQL。请参阅: 安装 (hexdocs.pm)

目录结构

./
├── _build
├── assets/
│   ├── css/
│   ├── js/
│   ├── static/
│   └── node_modules/
├── config/
├── deps/
├── lib/
│   ├── hello/
│   ├── hello.ex
│   ├── hello_web/
│   │   ├── channels/
│   │   ├── controllers/
│   │   ├── templates/
│   │   ├── views/
│   │   ├── router.ex
│   │   └── gettext.ex
│   └── hello_web.ex
├── priv/
└── test/

参见: 添加页面 (hexdocs.pm)

数据库迁移

$ mix ecto.gen.migration update_posts_table
  creating priv/repo/migrations/20160602085927_update_posts_table.exs
  ···
create table(:documents) do
  add :title, :string
  add :title, :string, default: "Hello"
  add :body, :text
  add :age, :integer
  add :price, :float, precision: 10, scale: 2
  timestamps
end

Ecto 迁移速查表

路由

get "/", PageController, :index

resources "/users", UserController do
  resources "/posts", PostController
end
user_post_path(conn, :index, 17)     # → /users/17/posts
user_post_path(conn, :show, 17, 12)  # → /users/17/posts/12

Phoenix 路由速查表

Conn(连接)

conn.host          # → "example.com"
conn.method        # → "GET"
conn.path_info     # → ["posts", "1"]
conn.request_path  # → "/posts/1"
conn
|> put_status(202)
|> html("<html><head>···")
|> json(%{ message: "Hello" })
|> text("Hello")
|> redirect(to: "/foo")
|> render("index.html")
|> render("index.html", hello: "world")
|> render(MyApp.ErrorView, "404.html")

Phoenix Conn 速查表

Ecto

$ mix phx.gen.html \
    Accounts \       # domain
    Profile \        # schema
    profiles \       # table name
    email:string \
    age:integer

Ecto 速查表

另请参阅