Phoenix 0.10.0 发布,包含资产处理、生成器等新功能
发布于 2015 年 3 月 9 日 作者 Chris McCord
我们本周末发布了 Phoenix 0.10.0,我们非常高兴地分享我们一直在开发的新功能。此版本带来了由 brunch 提供支持的资产构建系统,css/js/eex 模板的实时重载,表单构建器,以及新的 Ecto 与生成器的集成,让你能够快速启动和运行。
此版本中包含了如此多的好东西,以至于它值得一个屏幕截图,以便你可以看到它在行动中的样子。
实时重载
更改任何 css、js 或 EEx 模板,然后观看浏览器立即重新加载你的更改。最棒的是我们不需要任何浏览器插件。一切都由 Phoenix 通道驱动,并且无论你选择哪种 javascript 工具,它都可以正常工作。试一试 - 你会爱上它的。
静态资产处理
我们已经集成了 Brunch,以实现快速、简单的资产编译,它 Just Works。当你启动开发中的 mix phoenix.server
时,一个 brunch 进程会自动与你的端点一起运行,并且你位于 web/static/js
和 web/static/css
中的资产将在文件发生更改时被编译。更棒的是,使用我们新的实时重载功能,这些重新编译会在浏览器中重新加载,以获得简化的开发体验。我们还在 Brunch 集成中构建了一种方式,让你可以连接自己的资产系统,例如 Gulp、Grunt、Webpack 等。
开箱即用,我们支持 Sass 和 ES6 javascript 编译,但使用其他工具扩展你的 brunch-config.js
以支持你的资产工作流非常容易。
我们已经集成了 Brunch,以实现快速、简单的资产
编译,它 Just Works。当你启动开发中的 mix phoenix.server
时,一个 brunch 进程会自动与你的端点一起运行,并且你位于 web/static/js
和 web/static/css
中的资产将在文件发生更改时被编译。更棒的是,使用我们新的实时重载功能,这些重新编译会在浏览器中重新加载,以获得简化的开发体验。我们还在 Brunch 集成中构建了一种方式,让你可以连接自己的资产系统,例如 Gulp、Grunt、Webpack 等。
开箱即用,我们支持 Sass 和 ES6 javascript 编译,但使用其他工具扩展你的 brunch-config.js
以支持你的资产工作流非常容易。
此版本带来了两个新协议,Phoenix.HTML.FormData
和 Phoenix.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 changeset,但将支持实现 FormData
协议的任何数据结构。使用表单构建器,我们为你自动注入 CSRF 令牌以验证请求,并且你可以享受新的表单输入辅助函数,例如 text_input
、number_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-core 和 phoenix-talk 邮件列表,并参与到 #elixir-lang IRC 中。随时加入并提出问题,并为他人提供帮助。
编码愉快!