檢視原始碼 v1.7 的更動紀錄
請參閱 升級指南 來從 Phoenix 1.6.x 升級。
Phoenix v1.7 需要 Elixir v1.11+ 與 Erlang v22.1+。
驗證路由的介紹
Phoenix 1.7 包含一個新的 Phoenix.VerifiedRoutes
功能,它提供了 ~p
來搭配編譯時驗證來產生路由。
使用 sigil_p
巨集可讓您的應用程式中的路徑和 URL 在編譯時針對 Phoenix 路由器(們) 進行驗證。例如下列路徑和 URL 用法
<.link href={~p"/sessions/new"} method="post">Log in</.link>
redirect(to: url(~p"/posts/#{post}"))
將會針對標準的 Phoenix.Router
定義進行驗證
get "/posts/:post_id", PostController, :show
post "/sessions/new", SessionController, :create
不匹配的路由將會發出編譯警告
warning: no route path for AppWeb.Router matches "/postz/#{post}"
lib/app_web/controllers/post_controller.ex:100: AppWeb.PostController.show/2
注意:需要 Elixir v1.14+ 才能獲得全面的警告。舊版本會正常運作並在新的編譯上發出警告,但對路由檔案的變更不會發出新的警告。
此功能會取代在 Phoenix 路由器中產生的 Helpers
模組,但輔助器會繼續運作並產生。您可透過傳遞 helpers: false
選項給 use Phoenix.Router
來停用路由輔助器。
phx.new 改頭換面
應用程式產生器 phx.new
已改進,Controller 和 LiveView 繪製都仰賴函數元件,終極簡化 Phoenix 應用程式的繪製堆疊並提供更好的重複利用。
新的應用程式隨附一系列經過良好文件化和容易取得的核心元件,預設情況下使用 Tailwind CSS 進行樣式調整。您可以透過 --no-tailwind
標記來選擇不使用 Tailwind CSS(Tailwind CSS 類別會保存在產生的元件中作為未來樣式調整的參考)。
1.7.14 (2024-06-18)
錯誤修正
- 還原「將
follow_redirect/2
新增至 Phoenix.ConnTest」(#5797),因為這會與 LiveView 中預設透過 ConnTest 匯入的follow_redirect/2
發生衝突
1.7.13 (2024-06-18)
錯誤修正
- 修正 Cowboy2Adapter 中的 Elixir 1.17 警告
- 修正驗證路由發出沒有檔案和位置的診斷
JavaScript 客户端錯誤修正
- 當全球命名空間中沒有
sessionStorage
時,修正錯誤
強化功能
- 加入
follow_redirect/2
到 Phoenix.ConnTest - 將 LiveView 1.0.0-rc 用於新產生的應用程式
- 針對產生的
core_components.ex
中的表單錯誤,使用新的Phoenix.Component.used_input?
- 允許從 umbrella 根執行
mix ecto.setup
- 當
config_change
回呼執行時,將 Endpoint 靜態快取清單撞擊
1.7.12 (2024-04-11)
JavaScript Client 錯誤修正
- 修復所有未結合計點,以及任何單一未結合計點實例呼叫頻道離開時,將其從 socket 中移除
強化功能
[phx.gen.auth] 加入進階的 Session 固定防護。對於之前使用
phx.gen.auth
的應用程式,可以在驗證模組的renew_session
函式中加入以下這一行defp renew_session(conn) do + delete_csrf_token() conn |> configure_session(renew: true) |> clear_session()
注意:由於 Session ID 預設會使用僅限 Http 的 Cookie,在變更之前執行此攻擊的唯一方式是應用程式容易受到 XSS 攻擊,而這本身便會授予比 CSRF 固定更嚴重的「特權」。
JavaScript Client 強化功能
- 僅在 WebSocket 從未成功連線時,記住瀏覽器 Session 的長輪詢折衷方案
1.7.11 (2024-02-01)
強化功能
- [phx.new] 對於新產生的應用程式,預設使用 Bandit 網頁伺服器
- [phx.new] 對於新產生的應用程式,預設啟用長輪詢傳輸並在 websocket 失敗時自動折衷
JavaScript Client 強化功能
- 支援新的
longPollFallbackMs
選項,在 websocket 連線失敗時自動折衷 - 支援新的
debug
選項,以啟用詳細記錄
不建議事項
- 捨棄 Endpoint 中
c:init/2
回呼,建議改用config/runtime.exs
或{Phoenix.Endpoint, options}
1.7.10 (2023-11-03)
錯誤修正
- [phx.new] 修復
CoreComponents.flash
產生不正確的 ID,導致在按一下時無法關閉快閃訊息
強化功能
- [Phoenix.Endpoint] 支援
Endpoint.url/0
的動態通訊埠
1.7.9 (2023-10-11)
問題修正
- [Phoenix.CodeReloader] - 修正造成編譯錯誤的 code reloader 錯誤
- [phx.new] – 修正當傳入
--no-html
時,LiveView debug heex 設定檔產生問題
1.7.8 (2023-10-09)
問題修正
- [Phoenix.ChannelTest] 推播資料時將清單字串化
- [Phoenix.Controller] 修正傳送非 ASCII 名稱的下載資料時的檔案名稱
- [Phoenix.CodeReloader] 移置最近 Elixir 版本中重複的警告
- [Phoenix.CodeReloader] 如果診斷資料中沒有檔案資訊,請勿讓 code reloader 發生當機
- [Phoenix.Logger] 當狀態為原子時,請勿讓程式當機
- [phx.gen.release] 修復在 Elixir v1.15 中執行
mix phx.gen.release --docker
時會因:http_util
錯誤而失敗的問題 - [phx.gen.*] 由於沒有簡潔的比對輸入,略過產生表單中的貼圖輸入
- [phx.new] 修正 umbrella 專案中的 tailwind/esbuild 設定檔與路徑
- [phx.new] 如果動作為空,請勿為動作產生
th
強化功能
- [Phoenix] 允許最新
plug_crypto
- [Phoenix.Endpoint] 支援動態 socket 排水器設定檔
- [Phoenix.Logger] 將 socket 序列化 / 版本記錄變更為警告
- [Phoenix.VerifiedRoutes] 新增在
~p
中對包含片段的靜態資源的支援 - [phx.gen.schema] 支援
--repo
及--migration-dir
旗標 - [phx.new] 在 core 元件中允許
<.input type="checkbox">
沒有value
屬性 - [phx.new] 允許在產生器中使用 UTC 日期時間
- [phx.new] 使用 sqlite 3 時,當發布開始時自動執行移轉
- [phx.new] 允許在 flash 元件中指派 ID
- [phx.new] 新增
--adapter
旗標,以使用 bandit 產生應用程式 - [phx.new] 加入 DNSCluster,以執行簡單的叢集
- [phx.routes] 支援
--method
選項
1.7.7 (2023-07-10)
強化功能
- 支援透過 longpoll 傳輸,將二進位 payload 傳入通道
1.7.6 (2023-06-16)
問題修正
- 支援 websock_adapter 0.5.3
強化功能
- 允許在另一個程序中使用 Phoenix.ChannelTest socket/connect
1.7.5 (2023-06-15)
問題修正
- 修復排空連線時發生的 LongPoll 錯誤
1.7.4 (2023-06-15)
問題修正
- 修復 Websocket draining 傳送不正確的關閉代碼,導致 LiveView 重新載入頁面而不是重新連線
1.7.3 (2023-05-30)
強化功能
- 新增應用程式使用 LiveView 0.19
錯誤修正
- 修正偵錯程式掛載時,編譯錯誤頁面顯示模糊錯誤(應用程式編譯失敗時)
- 修正路徑驗證時,警告訊息列印兩次的錯誤
1.7.2 (2023-03-20)
改善
- [端點] 加入 socket 排水,用於批次和循序 Channel/LiveView socket 關閉
- [程式碼重新載入器] 改善編譯錯誤頁面,移除水平滾動條,並包含編譯的所有警告和錯誤
- [phx.new] 支援
--no-tailwind
和--no-esbuild
旗標 - [phx.new] 將 heroicons 移至 assets/vendor
- [phx.new] 簡化核心模式對話框,使用新的 JS.exec 指令以減少程式碼量
- [socket] 允許在 WebSockets 中設定自訂 csrf_token_keys
1.7.1 (2023-03-02)
改善
- [phx.new] app.css 捆綁嵌入 heroicons,以最佳化使用
1.7.0 (2023-02-24)
錯誤修正
- 透過批次訊息,修正長輪詢傳輸中的競爭狀況
1.7.0-rc.3 (2023-02-15)
改善
- 針對
phx.gen.live
產生器,使用基於串流的集合 - 更新
phx.gen.live
產生器,以使用Phoenix.Component.to_form
1.7.0-rc.2 (2023-01-13)
錯誤修正
- [路由器] 修正在類似路徑上造成不正確匹配順序的路由錯誤
- [phx.new] 修復在某些情況下安裝掛起的問題
1.7.0-rc.1 (2023-01-06)
改善
- 如果在函式外部使用已驗證路徑,則會引發異常
- 將 tailwind.install/esbuild.install 加入混合設定
錯誤修正
- [存在] 修復導致偶發存在錯誤的任務關閉匹配
- [VerifiedRoutes] 修復擴充導致編譯時期相依項比必要的還多
- [phx.gen.auth] 將密碼輸入新增至密碼重設編輯表單
- [phx.gen.embedded] 修正 phx.gen.embedded 遺漏 :references 產生
- 修正核心元件中文字區域呈示問題
- 在攔截時中止所有 socket,以修正長輪詢回應已送出的錯誤
1.7.0-rc.0 (2022-11-07)
不推薦使用
Phoenix.Controller.get_flash
已棄用,取而代之的是新的Phoenix.Flash
模組,提供統一的 flash 存取權
改進功能
- [Router] 新增
Phoenix.VerifiedRoutes
,使用~p
為基礎的路由產生,並於編譯時進行驗證。 - [Router] 支援
helpers: false
,使用Phoenix.Router
可停用輔助函式產生。 - [Router] 新增
--info [url]
切換至phx.routes
,取得 url/path 相關的路由資訊。 - [Flash] 新增
Phoenix.Flash
,統一 flash 存取權。
JavaScript 客户端錯誤修正
- 修正斷線後仍送出心跳訊號,導致異常斷線。
v1.6
v1.6 版本的變更紀錄可在 v1.6 分支 找到。