Джонатан Саринг
Не так давно, многие из нас несут подозрительно выглядящий чемодан в задней части наших автомобилей или имели кого-то спрятаны под нашими кроватями. Некоторые из нас имели башни из IKEA, с несколькими местами для хранения, стоящие гордыми в наших гостиных. В обоих случаях это был результат нашей впечатляющей коллекции музыки CD-ROM. Сегодня шансы они ностальгически хранятся в нашем гараже.
После короткого правления музыкальные CD-ROM были заменены itunes и YouTube с MP3-плеерами между ними. Эта революция произошла главным образом из-за 5 основных недостатков компакт-дисков с первого дня:
- Они были громоздкими для использования, несут и обрабатывать.
- Они приняли слишком много усилий, чтобы купить/создать.
- Им было очень трудно изменить и модифицировать. Никто не очень хотел сжечь новый CD всякий раз, когда вышла новая песня Bieber (не суди меня).
- Они заставили нас носить кучу песен, которые мы не слушаем и заппируйте их, чтобы слушать одну песню, которую мы действительно хотели слушать.
- Которые вспомнили, какие песни были на каком CD? 90% моих сгоренных компакт-дисков содержали ту же 10 песен в любом случае.
Удивительно, что это не все, что отличается от того, как мы сегодня разделяем код между проектами и между людьми. Давайте посмотрим, как.
Как на земле то, что подобно обмену?
Модульность всегда была священной границей разработки программного обеспечения, а ключом к лучшей повторной видимости, ремонтопригодности и оправданности.
Каждый день, больше приложений, которые мы строим, предназначены с большей модульностью через меньшие компоненты кода. Многоразовые функциональные возможности, интерфейсы пользовательского интерфейса и веб-компонентов (например, React, Vue и Angular), Node.js модули, APISCL APIS и даже безвесочные функции являются нашими строительными блоками.
Теперь давайте честным – кто точно знает, какие многоразовые компоненты были написаны в их кодовой базе, организует их и разделяет их между своими проектами в масштабе? Я знаю, что не сделал. Затем я начал спрашивать себя почему нет.
Позволь мне показать тебе. Вот a Реагировать приложение фильма размещены на Github. Как видите, он содержит в общей сложности 49 файлов и 14 каталогов. Одним из этих каталогов является Компоненты подкаталог. Внутри этого подкаталара есть 8 многоразовых реагированных компонентов (таких как Hero и навигация ).
├── src
│ ├── App.js
│ ├── App.scss
│ ├── App.test.js
│ ├── components
│ │ ├── hero
│ │ ├── hero-button
│ │ ├── item
│ │ ├── list-toggle
│ │ ├── logo
│ │ ├── navigation
│ │ ├── title-list
│ │ └── user-profile
│ ├── favicon.ico
│ ├── global.css
│ └── index.js
└── yarn.lock
Скажем, у меня есть еще одно приложение react, и я хочу использовать мой Герой Компонент в этом другом приложении, а также делает его обнаружимым для моей команды использовать в своих проектах и легко изменить его в соответствии с их потребностями.
Копировать код вставки – это Очень плохая идея Отказ Это может показаться быстрым способом, чтобы пойти об этом, но это на самом деле нет. Не делай этого.
На сегодняшний день у меня действительно есть три варианта:
- Опубликовать девять пакетов : Создайте восемь новых REPOS, Boaterplate и опубликовать девять пакетов и изменить оба исходного кода проекта на требуется их. Когда я захочу изменить компонент, мне придется очень усердно работать, чтобы внести изменения с разных REPOS. Теперь представьте, что имейте 500 из них.
- Я могу использовать Лерна Чтобы сохранить несколько пакетов в одном репо, но он работает только, если я действительно хочу пойти в MonoRepo. Даже тогда мне придется реструктурировать мой проект, настроить каждый пакет отдельно и определить их тресную зависимость, и каждое изменение все равно придется пройти через исходный репозиторий.
- Общая библиотека : Создайте новое репо, группируйте компоненты вместе, создайте конфигурации, необходимые для такого проекта, опубликуйте его как новую библиотеку и измените оба исходного кода проектов. Каждое приложение, использующее эту библиотеку, добавит избыточный код, вес и сложность. Каждая модификация потребует переизданию всей библиотеки и пройти через владелец.
Дело в том, пакеты – это Отличный для больших проектов. Для небольших компонентов и модулей эти решения разделяют некоторые из тех же проблем, что и музыкальные CD-ROM: серьезные накладные расходы, изменения жесткие, а обнаруженность отсутствует.
В некотором смысле, создавая 500 REPOS и пакетов, чтобы поделиться меньшими компонентами, напоминает мне об использовании игрока Mini-Disc (не мои лучшие 100 долларов): вы не можете решить эту проблему, оптимизируя ее. Вы должны инновации.
Итак … iTunes для общего кода?
Очевидно, что сравнение общих библиотек к CD-ROM не очень точно. Сложность обмена функциональностью между сложными средами и контекстами отличается от прослушивания леди Гага.
Тем не менее, общий общий код между проектами действительно не должен быть этим сложным. Что мы можем действительно узнать у того, как мы делимся и потребляем музыку сегодня, это эффективный обмен требует Лучше Опыт: Уменьшение накладных расходов, увеличение обнаружения и собирается от статического для динамической.
Итак, мы решили построить это
Когда-нибудь в начале 2017 года у нас была точная мечта. Одно из лучших вещей о открытом исходном источнике заключается в том, что имея идею, является совершенно хорошей причинами для его построения.
Мы решили пойти дальше и построить Бит – A an Проект с открытым исходным кодом Предназначен для совместного использования кода, какие iTunes сделал для совместного использования музыки – сделать его простым, динамичным и легко доступным для всех. Бит Идея проста: убить накладные расходы об обмене.
Как это работает
Он был построен для обеспечения самого быстрого опыта для «Управляемого копирования» и составлять 100% совместимым с Git и NPM.
Ключ лежит в способности бита разделяет представление общих кода из файловой системы вашего проекта, и его способность отслеживать общий код через REPOS и проекты, будь то установлен или фактически получен в этих проектах.
Он разбивает накладные расходы по обмену, устраняя необходимость разделить вашу репо, или необходимость реструктуризации вашего проекта и нескольких пакетов для нескольких пакетов.
Вместо этого вы можете просто указать бит в любую часть вашего репо, которую вы хотели бы поделиться, позвольте автоматически изолировать его (включая зависимости), и поделиться его на общее местоположение, называемое с помощью которого он может быть установлен с NPM.
Поскольку бит способен отслеживать фактический исходный код между проектами, вы также можете использовать его для импорта самого кода в любой репозиторий, измените его, и позвольте немного синхронизировать изменения в ваших проектах для вас.
При разделении вы даже можете извлечь Код вернулся к тому, чтобы быть зависимостью пакета для вашего проекта.
В результате в основном нет накладных расходов для совместного использования кода и доступен для него доступен с NPM, увеличена обнаружение, а обслуживание становится намного проще. Области даже помощи здание и тестирование вашего кода, чтобы вам не нужно настроить эти среды для каждого пакета.
Вот как Рабочий процесс бита Выглядит:
- Установите бит и инициализируйте его для вашего проекта.
- Выберите какие компоненты кода для отслеживания от вашего проекта и которые среды Чтобы добавить для сборки и тестирования процессов.
- Поделитесь их до удаленного объема, которые они размещены, организованы и были доступны для установки с использованием вашего любимого менеджера пакетов.
- Легко импортируйте свой код в любое репо, измените его по мере необходимости и обновите изменения на вашей кодовой базе.
Давайте посмотрим пример.
Вернуться к реакции кино-приложение
Давайте вернемся к React Movie-App Отказ
Добавление бита Для проекта позволил мне отслеживать и изолировать многоразовые компоненты внутри, не устанавливая новые репозитории или изменение кода моего проекта. Затем я поделился их этим Коллекция Отказ
Делить это заняло очень мало времени, и мой проект вообще не изменился. Нет новых package.json Файлы были созданы, и мне не нужно было настроить несколько сред или бороться с моим деревом зависимости.
Как видите, каждый компонент теперь доступен для моей команды для установки с НПМ или импортировать в свои собственные проекты для дальнейших модификаций.
Они могут искать его, и просмотреть полезную информацию – от живого рендеринга для построения и результатов тестирования, автоматически анализируемые документы и примеры – поэтому они могут судить о своей полезности.
Теперь наша команда теперь может организовать и поделиться нашими важными компонентами Common Code без необходимости усердно работать или изобретать колесо каждый день.
После использования его более 10 месяцев, а после его после использования дополнительных команд и сообществ я приветствую вас присоединиться и использовать его для ваших проектов.
Вы можете увидеть видео демонстрацию этого проекта здесь Отказ
Назад в будущее
До нескольких лет назад мы должны были сжечь новый проект для каждой песни, которую мы хотели послушать. Нам пришлось хранить и поддерживать несколько статических компакт-дисков и перетаскивайте кучу вещей, чтобы прослушать одну песню. Мы продублировали песни между компакт-диски и были проблемы с обнаружением песни, которые мы действительно хотели.
iTunes предоставил нам динамический опыт, который помог нам составить и делиться плейлистами, легко найти песни, которые мы хотели, и быстро обновляли наши плейлисты. Когда я на вечеринке, я могу легко сыграть свой романтичный плейлист Up-Tempo или так же, как легко играть в мои романтические песни моей кошке, чтобы пойти спать.
Мы можем многому научиться от того, как музыка переехала с CD-ROM для общей плейлистов. Бит Цель, чтобы сделать совместное использование кода и повторно использовать простым и доступным для всех, такими как iTunes сделал для общей музыки. Это все еще работа в прогрессе, и как таковая у него все еще есть много места, чтобы расти и развиваться. Добро пожаловать в Попробуйте это высказать идей и Обратная связь И помогите нам взять этот скачок вперед.
Оригинал: “https://www.freecodecamp.org/news/what-music-can-teach-us-about-the-way-we-share-code-a69c30ebded8/”