За последние две недели мы усердно работали над мигрирующими частями Медуза Кодовая база в типографию. Мы делаем это по нескольким причинам, все это связано с улучшением опыта разработчика. Теперь, когда мы постепенно объединяем первые части этой миграции, мы хотели бы поделиться некоторым представлением о том, почему мы не просто пошли с TypeScript в первую очередь и почему мы решили, что время сейчас.
Немного фона
Прежде чем работать на полную ставку над Медузой, мы работали в агентстве для нескольких различных клиентов электронной коммерции; Один из них хотел перейти от своего решения тогда, и когда мы не смогли найти новую подходящую платформу для них, мы согласились создать пользовательское решение с нуля. Мы не намеревались быть чем -то другим, кроме решения, которое оптимизировало бы и автоматизировал все рабочие процессы для клиента, поэтому мы прямо в режим разработки. По мере роста проекта и наш клиент росли, появились новые требования, и нам пришлось вернуться к чертежной доске. Это был первый раз, когда нам приходилось взвесить наши варианты в контексте проекта, который будет подлежат обслуживанию и простым в использовании в долгосрочной перспективе. Мы оценили подходы на основе нескольких пониманий:
- Растущие предприятия меняются (много)
- Когда вы находитесь на пути роста, вы можете обойтись с основными инструментами в начале, но когда процессы становятся более сложными, вам обычно нужно адаптировать инструменты в вашем стеке. Мы хотели построить нашу архитектуру, чтобы приспособить это понимание; Облегчение сочинения вашего стека электронной коммерции с лучшими в поставленных инструментах. Примечание : * Лучше всего подсчитываться для небольшой команды из 2 человек-это не то же самое, что лучшая в команде 25 человек, поэтому ваш стек должен быть динамичным. *
- Растущие предприятия нуждаются в контроле
- Если вы быстро растет, вам нужно контролировать то, что происходит, когда; Вы не можете сделать запрос на функцию, а затем сидеть 2 года, ожидая, когда он будет доступен. Вы должны быть в состоянии сразу же двигаться процесс.
- Клиентский опыт – король
- Если вы пытаетесь выделиться в толпе стандартизированных веб-сайтов, вам нужно сосредоточиться на ощущении бритвы на обслуживании клиентов. Клиенты должны чувствовать, что они вступают во вселенную на бренде при посещении сайта электронной коммерции, и для этого, возможно, вам придется изменить стандартный процесс просмотра, покупки и проверки, чтобы по-настоящему приспособить продукт или бренд.
- Разработчики являются ключом к тому, чтобы сделать все вышеперечисленное
- Разработчики получают плохой рэп за то, что они были дорогими, медленными и сложными для работы, и это в определенной степени имеет смысл; Тем не менее, существует невероятное количество проектов – меда, которая является одним из них – создание, которые сосредоточены на повышении эффективности разработчиков, что делает требования к возможностям разработчиков ниже и в конечном итоге облегчают то, что продавцам начинают использовать технологии без головы раньше, чем они были бы в противном случае имеют. По мере роста экосистемы отличных инструментов разработчиков она будет все более привлекательной для новых торговцев, чтобы сделать переключение как можно раньше.
Вышеуказанные требования были основополагающими для некоторых из решений высокого уровня, которые мы принимали в первые дни:
- Мы создали простую и модульную архитектуру, которая дает вам все основы из коробки и предоставляют интерфейсы, необходимые для легкой интеграции с другими инструментами, чтобы дать вам оптимальный стек.
- Мы открыли все, чтобы дать пользователям и продавцам полный контроль над тем, что построено
- Мы предоставляем отличные API и инструменты для создания пользовательских опытов электронной коммерции, которые перемещают иглу
- Мы тщательно думаем о том, как проектировать вещи наиболее благоприятными для разработчиков и Выберите инструменты в нашем стеке, которые такие разработчики любят Анкет
Почему мы не пошли с TypeScript в первую очередь
Вы можете думать сейчас: Ладно, но почему вы не начали с TypeScript, если вы хотите использовать инструменты, которые нравятся разработчикам. Правда в том, что когда мы начали развиваться, мы оптимизировали скорость; С учетом ограниченного опыта TypeScript мы почувствовали, что потенциально будет много неизвестных проблем, которые будут преодолеть, если бы мы решили пойти по этому пути. Кроме того, TypeScript был не так широко установлен, как сегодня, и было бы очень грустно, если бы мы выбрали язык, который не стал популярностью через пару лет ( кашель CoffeeScript и друзья) Анкет Это не значит, что нам не понравилось TypeScript, напротив, мы всегда думали, что TypeScript был невероятно мощным, однако Линди Мы решили, что стоит немного ждать.
В первую очередь не соблюдая TypeScript, позволил нам делать другие удивительные вещи, такие как создание невероятно мощной основной архитектуры и несколько отличных плагинов, которые обеспечивали интеграцию для таких систем, как Полоса, сегмент, Sendgrid и другие Анкет Мы смогли сделать это в невероятном темпе и быстро итерации, изменяя API на день за повседневным Мы выяснили вставки о том, как должны течь данные и где мы хорошо понимаем Типы и интерфейсы необходимо для модульности и композиции.
Почему сейчас время
Когда вы являетесь единственным разработчиком и пользователем проекта, вы знаете API глубоко, потому что вы их написали. Иногда ваша память может быть немного неясной, но, как правило, она не отвлекает ваш рабочий процесс, поэтому вы не думаете о том, что Intellisense не начинается. Это сильно меняется, однако, когда вы начинаете работать над вещами, которые не являются вашим творением, и не только с точки зрения пользователя также с точки зрения участника. Скажем, вы работаете над кодом, который называет некоторую функцию, которую написал кто -то другой из вашей команды. Хотя вы, возможно, говорили со своим товарищем по команде о том, как API предназначены для работы и какие потоки данных должны продолжаться, вы можете не знать точные детали реализации, и тогда он начинает быть очень полезным, чтобы иметь все Ваш инструмент на месте.
Мы так рады видеть, как сообщество вокруг медузы растет, и поэтому мы очень хорошо знаем, что нам нужно как можно больше улучшить все инструменты в экосистеме, чтобы обеспечить лучший опыт разработчика. Кроме того, мы уверены, что TypeScript будет существовать в течение долгого времени, и по этой причине сейчас время!
Как мы делаем это
Мигрирование всей нашей кодовой базы займет некоторое время, поэтому мы начинаем с частей, которые имеют наибольший смысл и движутся дальше. Мы уже используем Sypeorm для уровня данных, поэтому все наши объекты базы данных вводятся. Мы пошли вперед и добавили TypeScript ко всем контроллерам Core API, вводив все полезные нагрузки и ответы. Это добавляет удивительное преимущество в возможности поделиться определениями типов между основным проектом и нашим клиентом JS, по сути, обеспечение того, чтобы, когда вы делаете звонки через нашу клиентскую библиотеку Вы видите точные свойства класса, которые используются для проверки полезной нагрузки запроса .
Что дальше
Мы собираемся добавить TypeScript во всем основном пакете по мере продвижения, и наша цель – в конечном итоге перенести весь наш код. Если вы заинтересованы в помощи или хотите попробовать Medusa, зайдите на наш GitHub Repo и Присоединяйтесь к нашим разногласиям Где вы можете получить прямой доступ к инженерной команде!
Оригинал: “https://dev.to/medusajs/why-we-migrated-to-typescript-after-all-3efa”