Фреймворк JavaScript с открытым исходным кодом на eBay позволяет модернизировать универсальную веб-разработку.

Авторы: Райан Карниато, Майкл Роулингс и Дилан Пирси

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

Ключевым элементом участия eBay в сообществе разработчиков ПО с открытым исходным кодом является наш самый популярный проект с открытым исходным кодом Marko. Первоначально разработанный eBay в 2012 году для перехода от нашего стека Java к стеку узлов, теперь он используется в большинстве ebay.com. Пока Марко перешел в OpenJS Foundation, eBay по-прежнему активно поддерживает проект.

Marko - это JavaScript-фреймворк для создания универсальных веб-сайтов: вы пишете свой код один раз, и он без проблем работает как на сервере, так и в браузере. Марко выделяется своей невероятной производительностью серверного рендеринга и умной компиляцией для генерации оптимального кода как для сервера, так и для браузера. Это было жизненно важно для достижения наших целей по производительности для платформы eBay и является кульминацией многолетнего испытанного опыта в глобальном масштабе.

Со времени последнего крупного релиза Марко в 2017 году современный Интернет развивался с головокружительной скоростью. Экосистема JavaScript пережила бурный рост, а возможности инструментов расширились. Итак, Марко изменился вместе с ним. В последнее время внимание возвращается к серверному рендерингу и серверным компонентам - темам, лежащим в основе его ДНК - Марко уже предлагает функции следующего поколения.

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

Новый компилятор

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

Это также упрощает взаимодействие с современной экосистемой JavaScript. Мы обновили наши сторонние интеграции и добавили несколько новых:

  • Bundlers: теперь вы можете создавать свои проекты Marko с помощью Webpack или Rollup в дополнение к Lasso на eBay.
  • Тестирование: Марко полностью интегрируется с Jest и Storybook. Тестируйте с уверенностью с Библиотекой тестирования Марко.
  • IDE: языковой сервер Марко легко интегрируется в VSCode, обеспечивая мощное автозавершение кода и навигацию; подсветка синтаксиса; и сообщения об ошибках в реальном времени.

Мы продолжим работать над включением поддержки таких инструментов, как TypeScript, Prettier и ESLint.

Улучшенный интерфейс командной строки

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

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

Для начала просто запустите команду со своего терминала и следуйте интерактивному интерфейсу командной строки.

npx @marko/create

Это только начало

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

Сейчас лучшее время, чтобы попробовать Марко. Вы можете найти новую версию на нашем GitHub, а наши обновленные документы - на www.markojs.com. Убедитесь сами, каково использовать платформу JavaScript, созданную с нуля, с учетом как сервера, так и браузера.

Первоначально опубликовано на https://tech.ebayinc.com 11 февраля 2021 г.