Phoenix 0.10.0 發布,具備資產處理、產生器等等功能

發佈於 2015 年 3 月 9 日,作者 Chris McCord


我們於本週末發布了 Phoenix 0.10.0,對於我們已完成的新功能,我們感到十分興奮。此版本带来了由 brunch 提供支援的資產建置系統、css/js/eex 範本即時重新載入、表單建構器,以及與產生器的新的 Ecto 整合,能讓您快速開始並執行。

此版本包含許多很棒的東西,它值得一個螢幕擷取畫面,讓您看到它實際運作的樣子

即時重新載入

變更任何 css、js 或 EEx 範本,並觀看瀏覽器立即載入經您變更後的內容。最棒的是,我們不需要任何瀏覽器外掛程式。所有的功能都是由 Phoenix 通道提供支援,而且與您選擇的 JavaScript 工具無關。試試看,您會愛上它的。

靜態資產處理

我們整合了 Brunch 以提供快速且簡單的資產編譯,它就能正常運作。當你在開發中開始 mix phoenix.server 時,將會自動與您的端點並行執行 Brunch 程序,且當檔案變更時,您的資產將在 web/static/jsweb/static/css 中進行編譯。更好的是,有了我們新的即時重新載入功能,這些重新編譯會在瀏覽器中重新載入,以提供順暢的開發體驗。我們也以能讓您連接自己的資產系統(例如 Gulp、Grunt、Webpack 等)的方式,來建置 Brunch 整合。

一開始,我們支援 Sass 和 ES6 JavaScript 的編譯,但要使用其他工具來支援您的資產工作流程,您只要延伸自己的 brunch-config.js,就能辦到。

我們整合了 Brunch 以提供快速且簡單的資產

編譯,它就能正常運作。當你在開發中開始 mix phoenix.server 時,將會自動與您的端點並行執行 Brunch 程序,且當檔案變更時,您的資產將在 web/static/jsweb/static/css 中進行編譯。更好的是,有了我們新的即時重新載入功能,這些重新編譯會在瀏覽器中重新載入,以提供順暢的開發體驗。我們也以能讓您連接自己的資產系統(例如 Gulp、Grunt、Webpack 等)的方式,來建置 Brunch 整合。

一開始,我們支援 Sass 和 ES6 JavaScript 的編譯,但要使用其他工具來支援您的資產工作流程,您只要延伸自己的 brunch-config.js,就能辦到。

這個版本帶來了兩個新的協定,Phoenix.HTML.FormDataPhoenix.Param,能讓您輕鬆將模型層與 Phoenix 的新表單和連結建構器整合。作為預設但選用的依賴項,我們現在透過 phoenix_ecto 專案來整合 Ecto,在其中您可以看到這兩個新協定的實作。讓我們來看看吧

<%= form_for @changeset, @action, fn f -> %>
  <%= if @changeset.errors != [] do %>
    <p style="color: red">Oops, something went wrong!</p>
  <% end %>

  <p>
    <label>
      <span>Title:</span>
      <%= text_input f, :title %>
    </label>
  </p>

  <p>
    <label>
      <span>Rank:</span>
      <%= number_input f, :rank %>
    </label>
  </p>

  <p>
    <%= submit "Submit" %>
  </p>
<% end %>

form_for 在此接受 Ecto 更新內容,但也會支援任何實作 FormData 協定的資料結構。有了表單產生器,我們會自動替你注入 CSRF 令牌來驗證要求,你可以使用新的表單輸入輔助程式,例如 text_inputnumber_input

除了表單以外,我們現在包含一個 link 函式,用來在你的範本中建立錨點

<%= for post <- @posts do %>
  <tr>
    <td><%= post.title %></td>
    <td><%= post.rank %></td>

    <td><%= link "Show", to: post_path(@conn, :show, post) %></td>
    <td><%= link "Edit", to: post_path(@conn, :edit, post) %></td>
    <td><%= link "Delete", to: post_path(@conn, :delete, post), method: :delete %></td>
  </tr>
<% end %>

注意我們可以撰寫 post_path(@conn, :show, post),而不用 post_path(@conn, :show, post.id) 嗎?這要歸功於新的 Phoenix.Param 協定,它讓你可以定義如何將資源轉換成路徑和 URL。你可能也注意到了 method: :delete 選項。這會將連結標籤轉換成表單提交,用作 DELETE 要求,並會替你注入 CSRF 令牌。對於快速連結來說,這很方便,不用自己建立表單便可刪除或更新資源。

資源產生器

Ecto 整合包括新的 mix phoenix.gen.resource 工作,這個工作會引導建立一個提供雛型程式碼產生的模型,讓你使用 Phoenix 和 Ecto 快速達到熟練度,並立即開始建立應用程式。你可以使用類似以下的單一指令

mix phoenix.gen.resource Post posts title:string rank:integer

建立一個遷移檔案,使用提供的架構,並產生用於 CRUD 操作的模型、檢視、範本和控制器檔案。這是學習 Phoenix 基礎知識和體驗最新最強大的 Ecto 功能的好方法。

從 0.9.x 升級

請參閱這些 從 0.9.x 升級至 0.10.0 的說明,讓你的既有應用程式升級。

參與貢獻

這是 Phoenix 0.10.0。如果你在之前的版本中錯過了這一點,我們已經對頻道系統進行許多改進,包括對第三方後端(從 Redis 開始)的支援。現在我們已經簡化了開發體驗。我們有一些重大的公告即將在 1.0 版本中釋出,所以請隨時瀏覽 phoenix-corephoenix-talk 郵件清單,並參與 #elixir-lang IRC 中的討論。請隨時加入並提問,並為他人提供協助。

快樂編碼!