Phoenix — веб-фреймворк на языке программирования Elixir, призванный обеспечить высокую производительность веб-приложений.
Основой фреймворка является движок LiveView, который обеспечивает возможность обновления DOM на стороне сервера с помощью долгоиграющего WebSocket-соединения, что позволяет писать интерактивные веб-приложения без использования JavaScript.
Нововведения:
- Команда
phx.gen.auth
, позволяющая добавить готовые функции аутентификации в приложение. - В состав Phoenix включена библиотека для работы с электронной почтой Swoosh.
- Вместе с обновлённой LiveView 0.16 Phoenix получил новый движок для рендера HTML-шаблонов — HEEx. В сравнении со старым движком (EEx), HEEx предоставляет:
- Поддержку HTML-атрибутов.
Т.к. HEEx должен разбирать и проверять структуру HTML, конструкции
<%= ... %>
и<%= ... %>
нужно использовать только для интерполяции содержимого тегов и не могут применяться в самой разметке. Вместо:<div class="<%= @class %>">...</div>
, следует писать:<div class={@class}>...</div>
. - Проверку структуры шаблона на этапе компиляции.
- Минимизацию количества передаваемых данных.
- HTML-подобную нотацию, для вставки функциональных компонентов. Пример:
- Поддержку HTML-атрибутов.
Т.к. HEEx должен разбирать и проверять структуру HTML, конструкции
<MyApp.Weather.city name="Kraków"/>
# где сам компонент имеет следующий вид:
defmodule MyApp.Weather do
use Phoenix.Component
def city(assigns) do
~H"""
The chosen city is: <%= @city %>.
"""
end
def country(assigns) do
~H"""
The chosen country is: <%= @country %>.
"""
end
end
-
Появился механизм привязки к этапам жизненного цикла LiveView (lifecycle hooks).
-
Новый макрос
live_session
, позволяющий осуществлять навигацию через существующие WebSocket-соединения, что помогает избежать лишних HTTP-запросов и значительно ускоряет навигацию. -
Сборка JS и CSS теперь осуществляется без Node и Webpack, которые годами создавали проблемы в части поддержки проекта.
>>> Подробности