🖥 Разработка новостного портала на Elixir + Phoenix
GitHub: https://github.com/Adamanr/RedNews
Недавно я начал экспериментировать с Elixir, и после завершения первого pet-проекта сразу перешел к следующему – разработке новостного портала, но теперь уже с использованием Phoenix. До этого у меня был опыт работы с ним, однако каждый раз я сталкивался со сложностями фреймворка, что приводило к отказу от продолжения проекта. Однако после успешного опыта работы с чистым Elixir, я смог оценить удобство и простоту работы с этим фреймворком. Поэтому рекомендую всем, кто хочет начать использовать Phoenix, начинать с простых проектов на чистом Elixir ❤️
Одной из интересных идей для веб-приложения стало создание многофункционального новостного портала, включающего такие функции, как публикация обычных постов, проведение live-трансляций и многое другое. Пока что реализована лишь возможность публикации новостей и статей, но это только начало; я планирую регулярно возвращаться к проекту и доводить его до полноценного MVP 💼
Phoenix показал себя как чрезвычайно удобный инструмент для разработки веб-приложений. Ранее я создавал аналогичный портал на Ruby on Rails, но Phoenix значительно превосходит его по удобству благодаря LiveView (подробнее об этом ниже). Особенно впечатлила архитектура фреймворка, которая хотя и кажется поначалу сложной (особенно для разработчиков, привыкших к Rails), но именно эта гибкость и прозрачность делают её столь привлекательной. Организация структуры каталогов также заслуживает внимания: все элементы располагаются логично и интуитивно понятно, что избавляет от необходимости поиска нужных файлов__ (в отличие от Django)__. Кроме того, утилита mix предоставляет удобные средства для генерации схем базы данных, контроллеров и других компонентов, что существенно ускоряет процесс разработки 😄
🚶♀️ LiveView
Это мощный инструмент, позволяющий работать с реактивными компонентами без использования JavaScript, сохраняя чистоту и выразительность кода на Elixir. В предыдущих проектах на Rails мне приходилось использовать библиотеку Hotwire для реализации интерактивных элементов, что вызывало определенные неудобства из-за необходимости написания дополнительного JavaScript-кода. LiveView же предлагает не только динамическую работу без JavaScript, но и серверный рендеринг, что значительно упрощает разработку сложных интерфейсов. Работа с LiveView оказалась комфортной и продуктивной, особенно учитывая, что весь код пишется на одном языке, что исключает необходимость постоянного переключения между Elixir и JavaScript 😞
☀️ Heex
Я уже имел дело с предшественником Heex – EEx, и хотя значительных отличий между ними нет, но показалось, что Heex обеспечивает более высокий уровень комфорта. Например, в файле core_components.ex уже реализованы многие полезные компоненты, такие как списки, формы, уведомления и другие, что облегчает разработку пользовательского интерфейса. Вывод элементов на страницу также стал проще, хотя понимание принципов работы с такими конструкциями, как assign и stream, потребовало времени 🤔
🥁 В заключение
Таким образом, использование Elixir совместно с Phoenix позволило не только быстро разработать простую версию новостного портала, но и сделать это с комфортом и удовольствием. Исходя из такого опыта, все мои последующие проекты будут выполняться именно на этой связке технологий. Несмотря на то, что экосистема Elixir еще находится в стадии развития, я верю, что Phoenix имеет потенциал стать популярным выбором для стартапов и высоконагруженных приложений. Если вам необходим современный, удобный и производительный фреймворк для ваших проектов, Phoenix станет отличным решением ☀️