Elixir-это альтернатива веб-разработке на основе JavaScript, которая утверждает, что предлагает более быструю разработку и снижение затрат. В этом пошаговом руководстве разработчика мы пробуем Elixir и его веб -структуру Phoenix.
Эликсир был создан Джоса Валима в 2011 году в ответ на проблемы веб -разработки. Валим стремился объединить надежность и масштабируемость Эрлана с целями современных разработчиков. Эликсир-это язык программирования, построенный на виртуальной машине Erlang, известный своей параллельностью и неисправностью. Эликсир может справиться с тысячами одновременных соединений, что делает его хорошо подходящим для распределенных, устойчивых к неисправным системам. Он использует парадигму функционального программирования.
Phoenix — это веб -структура, построенная на вершине Elixir. Феникс обрабатывает маршрутизацию, интеграцию базы данных и стандартные веб -конвенции. Это рекомендуемый вариант для разработчиков, которые хотят создать веб -приложения или API в Elixir.
Сильный вариант использования для использования Phoenix и Elixir — это приложения, которые требуют тысячи одновременных соединений без замедления. Подумайте о приложениях чата, живых панелях, многопользовательских играх. У Phoenix есть живое представление, где вы можете протолкнуть обновления в браузер, не написав ни одной строки JavaScript.
Однако это не ловко; Есть много случаев, когда JavaScript остается оптимальным инструментом. Если вам нужна богатая интерактивность на стороне клиента, быстро создаете прототипирование или создание мелких приложений или вы хотите интеграцию со средами JavaScript, JavaScript, JavaScript и его инструменты все еще являются лучшим выбором, чем Elixir.
Давайте перейдем к грубой части: в моем коротком опыте работы с Elixir и Phoenix я обнаружил, что это программное обеспечение неинтуированным и разочаровывающим для работы. Я говорю, что знание этого, вероятно, представляет мой навык как разработчика так же, как и само программное обеспечение (извините). Тем не менее, я написал больше этих статей, чем мог бы быстро сосчитать. Это первый раз, когда я почти опубликовал учебник с ошибками в нем. Почему? Когда каркасы Phoenix на страницы, код шаблона включает в себя неправильные маршруты. Да, это разрешается, но я построил многие из этих основных приложений CRUD. Работа с Фениксом была самой расстраивающей.
Требования
Примечание: мне пришлось обновить свою ОС для Sequoia, прежде чем я смог установить Elixir.
- Эликсир 1.15+
- Erlang/OTP 26+
- Node.js (для активов)
- Postgresql (или другой поддерживаемый DB)
Создать новый проект Phoenix
Это создает проект со следующей структурой каталога:
- Контроллеры lib/notes_app_web/controllers
- Шаблоны HTML lib/notes_app_web/шаблоны
- Маршруты lib/notes_app_web/router.ex
- Контекст примечания для бизнес -логики lib/notes_app/notes.ex
Настройка базы данных
Настройка базы данных позволит вам хранить заметки задолго до того, как вы обновляете страницу.
Сборка интерфейса CRUD
У Phoenix есть команда генератора, которая создаст полный веб -интерфейс CRUD для ресурса.
Это создает контекст заметок, схемы, таблицу и столбцы для таблицы. Контекст — это вспомогательные функции для создания, обновления, удаления и списков заметок. Схема — это план нот. Инструкции по миграции создают таблицу в базе данных. Контроллер обрабатывает все запросы. Просмотры и шаблоны отображают приложение в вашем браузере. И тогда у нас есть маршрутизатор, который обеспечивает /заметки в конце URL.
Мы готовы запустить Dev Server. Это может работать на протяжении всего процесса разработки. Нам не нужно начинать и останавливать это.
Перейдите к этому URL в своем браузере:
Вы увидите, что есть много папок и файлов. Мне это не понравилось, что могло быть началом моих испытаний.
Мы собираемся сосредоточиться на следующих страницах:
- Индексная страница
- Показать страницу
- Новые и редактировать страницы
- Контроллер
- Маршрутизаторы
Индексная страница
Вы найдете страницу индекса в notes_app_web/stemplates/note/index.html.heex.
Это домашняя страница, и она показывает все ваши заметки. Это центральная страница навигации, плюс это страница, к которой нам нужно будет возвращаться после удаления или редактирования записки.
Показать страницу
Эта страница будет показана вам в подробности. Цель этой страницы — помочь пользователю прочитать или подробно просмотреть конкретную ноту. Вы можете найти его здесь: notes_app_web/templates/note/show.html.heex
Новые и редактировать страницы
Это наши страницы формы, где мы строим и редактируем заметки.
Вот частичная форма: _form.html.heex.
Создайте новую примечание: new.html.heex
Вот где вы можете редактировать примечание: edit.html.heex
Прежде чем мы построим контроллер, давайте поговорим о отладке. Когда Phoenix разбивает шаблон для вашего ресурса Notes, он все еще включает в себя маршрутизаторы старого стиля. Старые маршрутизаторы стиля (которые не будут работать с последней установкой) выглядят как код ниже, и вы найдете их в контроллере:
Они были заменены проверенными маршрутами, которые используют синтаксис ~ P. Если вы не проходите вручную и замените старый код, вы увидите ошибки, когда редактируете или удаляете заметки в своем браузере. Я использую Chrome, и это случилось со мной во время создания этого урока … много.
Есть простое исправление, хотя: замените старые маршруты на этот код:
Мы готовы построить контроллер
Вот где происходит действие приложения. Мы собираемся встроить нашу полную функциональность CRUD в этот файл. Контроллер подключает шаблоны к базе данных. Он обрабатывает бизнес -логику, валидацию и навигацию (перенаправления). Вы можете найти этот файл здесь: notes_app_web/controllers/note_controller.ex.
Маршруты
Маршруты сообщают Фениксу, какое действие контроллера требует каждого URL. Ресурсы генерируют все стандартные маршруты CRUD автоматически. Вы можете найти этот файл здесь: notes_app_web/router.ex.
И там у тебя это есть! Вы можете найти это программное обеспечение более интуитивно понятным и проще в работе, чем я. Попробуйте.
Trending Stories youtube.com/thenewstack Tech движется быстро, не пропустите эпизод. Подпишитесь на наш канал YouTube, чтобы транслировать все наши подкасты, интервью, демонстрации и многое другое. Группа подпишитесь с эскизом. Джессика Вахтел — писатель по маркетингу разработчиков в InfluxData, где она создает контент, который помогает сделать данные о мире временных рядов более понятными и доступными. Джессика имеет опыт работы в разработке программного обеспечения и технической журналистике. Подробнее от Джессики Вахтел