Разработчики часто сталкиваются с ситуациями, когда им приходится повторно использовать похожие участки кода. Они могут варьироваться от сложных библиотек компонентов до небольших служебных функций, помогающих в решении общих задач. Независимо от того, решают ли эти части кода одну и ту же проблему или они адаптированы для удовлетворения текущих потребностей, может быть очень полезно обобщить эти решения, чтобы они соответствовали критериям каждой проблемы. В этой статье мы рассмотрим, как надстройки Ember обеспечивают простой способ изоляции и распространения этих многократно используемых фрагментов кода. Мы также рассмотрим некоторые советы по планированию, созданию и публикации этих дополнений.

Что такое пакеты JavaScript

Прежде чем мы поговорим о надстройках, мы должны взглянуть на пакеты JavaScript. Пакеты — это решения с открытым исходным кодом для проблем, с которыми разработчики сталкиваются ежедневно. При разработке вы можете столкнуться с конкретной сложной проблемой и подумать про себя: Мне действительно нужно изобретать велосипед здесь? Чаще всего ответ - нет! Например, манипулирование датами и их разбор могут стать настоящей головной болью. Благодаря прекрасному миру программного обеспечения с открытым исходным кодом в JavaScript есть пакет под названием Luxon.js, предоставляющий огромное количество функций для работы с датами. Подобные пакеты можно найти на npmjs.com.

Ember Addons против пакетов

Так что же такое аддоны Ember? На самом деле это просто пакеты JavaScript, предназначенные для использования в среде Ember.js. Они обеспечивают те же преимущества, что и пакеты — организация логически связанного кода, простой способ повторного распространения кода, разделение повторно используемого кода и многое другое. Несмотря на свое сходство с пакетами, надстройки имеют некоторые дополнительные функции. Ember предоставляет несколько инструментов командной строки и руководств, которые помогают создавать надстройки. Аддоны также публикуются в Ember Observer (в отличие от дома пакетов NPM), сайте сообщества, на котором отображаются все аддоны Ember. Кроме того, надстройки подключаются непосредственно к процессу сборки Ember. Это позволяет надстройкам изменять сборку родительских приложений.

Почему Ember Addons полезны

Во-первых, давайте посмотрим на преимущества инкапсуляции кода, которые обеспечивают надстройки. По мере того, как проекты становятся больше, сложность кода имеет тенденцию к увеличению. Это может вызвать серьезные проблемы, когда кажущиеся простыми исправления становятся разочаровывающими битвами. Одно небольшое изменение может привести к каскадным проблемам во всем приложении. Решением этой проблемы является изоляция кода. Чем больше вы планируете отделять функции друг от друга, позволяя каждому инкапсулированному разделу выполнять одну работу (и делать это хорошо), тем меньше времени вы потратите на решение этих каскадных проблем. Скрытое преимущество инкапсуляции будет заметно при написании тестов, поскольку каждый логически сгруппированный раздел кода становится доступным для тестирования как отдельный элемент.

Дополнения позволяют разработчикам изолировать необходимые им функции от кода в его собственной среде. Кроме того, надстройки, поддерживаемые извне, позволяют нескольким разработчикам работать синхронно, при этом изменения одного из них не влияют на других. Это может помочь команде координировать и планировать заранее.

Аддоны также обеспечивают простой способ совместного использования функций. Когда код экспортируется в собственный аддон, его становится невероятно легко импортировать в разные проекты. Это ускоряет разработку, поскольку общие проблемы часто решаются один раз, а решения используются повторно. Аддоны также могут предоставить разработчикам общую основу для ссылок. Когда команды используют одни и те же надстройки, становится легче обсуждать, улучшать и вносить изменения в код, который будет использоваться всеми.

На данный момент у нас достаточно доказательств того, почему аддоны полезны и важны. Теперь мы можем глубже погрузиться в то, как аддоны оживают и публикуются для использования сообществом.

Создание и публикация дополнений Ember

Много раз вы замечали, что неоднократно решали одну и ту же проблему в разных проектах или создавали что-то, что, по вашему мнению, могло бы помочь другим. Вы также можете разрабатывать сложную функцию в рамках проекта и чувствовать необходимость изолировать ее код для будущего экспорта. Любая из этих ситуаций является серьезной причиной для создания надстройки.

Но прежде чем приступить к созданию аддона, вы должны проверить, существует ли существующий аддон, который реализует то, что вы пытаетесь сделать. Если есть, то добавить его в проект так же просто, как запустить «ember install (имя надстройки)» из приложения Ember. Если аддон не совсем делает то, что вам нужно, вы всегда можете отправить запрос на вытягивание с предложенной вами функциональностью. Это отличный способ отблагодарить сообщество Ember.

Если вы не нашли существующий аддон, поздравляю — вы собираетесь сделать совершенно новый! Начать следует с планирования его функциональности. Планирование структуры аддона и «что он должен делать» может быть очень полезным. Многие вопросы должны быть рассмотрены до начала разработки. Кто будет использовать этот аддон? Как эти люди захотят его использовать? Важно, чтобы эти соображения были отражены на раннем этапе, чтобы вы могли создать что-то, что отвечает требованиям тех, кто его использует. Кроме того, обычно рекомендуется планировать обобщение функциональности аддона, чтобы другие могли легко адаптировать его для удовлетворения своих конкретных потребностей.

После того, как вы настроили общий план, пришло время приступить к работе, настроив аддон. Инструменты командной строки Ember позволяют нам запускать «ember addon (addon-name)» из любого каталога. Это создает базовую файловую структуру для аддона. Затем мы убеждаемся, что код работает, и пытаемся сгенерировать как минимум один или два разных примера, используя функциональность аддона. Когда у нас есть работающий прототип, мы пытаемся оптимизировать, очищать и вносить общие улучшения в код. Написание чистого, лаконичного и хорошо документированного кода позволяет вам легче улучшать и исправлять надстройку в будущем, а также облегчает участие других. После очистки и проверки работы наша команда проверяет код, чтобы предоставить конструктивную обратную связь и предотвратить любые упущенные проблемы. Наконец, пришло время опубликовать аддон в мире с открытым исходным кодом и позволить другим извлечь выгоду (и, надеюсь, внести свой вклад) в нашу тяжелую работу!

Последние мысли

Мы немного взглянули на мир программного обеспечения с открытым исходным кодом и на то, как сообщество Ember.js предоставило удобный инструмент для участия в этом мире. Аддоны предоставляют разработчикам умный и полезный способ делиться решениями общих проблем. В Gavant мы учитываем все вышеперечисленное, когда уделяем время исследованиям и созданию дополнений. От разработчиков до высшего руководства мы понимаем важность разработки с открытым исходным кодом и то влияние, которое она может оказать на повышение эффективности разработки.

Для получения более подробной технической информации о надстройках в Ember.js посетите https://cli.emberjs.com/release/writing-addons/.

Для более глубокого изучения впечатляющих дополнений, созданных сообществом Ember, посетите https://emberobserver.com/.

Если вас интересуют некоторые из классных опубликованных дополнений, которые мы сделали в Gavant, посетите https://github.com/Gavant.

Первоначально опубликовано на https://www.gavant.com 17 марта 2021 г.