Свершилось! Команда Meteor выпустила версию 2.0, которая была в разработке последние пол года. Посмотрим, что нового внутри и снаружи. Так же поделюсь полезными материалами по теме.
Кратко о том, что такое Meteor:
Meteor это full-stack JavaScript фреймворк, включающий практически все, что нужно для разработки полноценного веб приложения:
- zero-config сборщик, умеющий работать с JS/TS, минифицировать, разделять сборки для старых и новых браузеров, транспилировать код до ESNext;
- возможность подключить на выбор React, Vue, Angular, Svelte, Blaze - любой инструмент, подходящий вам для разработки клиентской части приложения;
- готовый транспортный слой(DDP) поверх WebSocket, и вызов серверных функций через RPC;
- встроенная поддержка MongoDB, но можно работать и с другими бд;
- Meteor построен на основе NodeJS, поэтому доступно все то, что есть в NPM.
Что нового в 2.0
Hot Module Replacement (HMR)
Meteor умеет пересобирать сборки(клиентскую и серверную), если обнаруживает изменения в коде. Однако, это может занимать достаточно много времени, если размер кодовой базы большой.
HMR позволяет быстрее увидеть изменения, так как подменяет JavaScript модули "на лету" не дожидаясь окончательной сборки приложения. При этом не нужно обновлять страницу или перезапускать приложение.
React компоненты обновляются автоматически, используя React Fast Refresh. Для других библиотек необходимо использовать сторонние решения. Поддержка Blaze (ui библиотека от Meteor) в процессе разработки.
Meteor Cloud, Free tier
В последнее время команда Метеора нацелена на объединение различных продуктов компании, чтобы они выглядели как часть одного целого. Хостинг Galaxy Hosting, менеджер пакетов Atmosphere и мониторинг производительности Meteor APM теперь стали частью одной семьи Meteor Cloud. На блоге компании есть статья, подробно описывающая приход к Meteor Cloud.
Куда более значимым изменением стало возвращение бесплатного хостинга!
Теперь можно деплоить приложение одной командой:
meteor deploy habr.meteorapp.com --free
А если вам нужна бесплатная MongoDB, то добавляем --mongo
meteor deploy habr.meteorapp.com --free --mongo
Бесплатный хостинг отлично подходит для:
демонстрации ваших пакетов: теперь не нужны отдельные хостинги, а залить/обновить демо дело одной команды;
запуска MVP: если у вас маленькие нагрузки и объемы, то можно временно разместиться на бесплатном плане. В дальнейшем можно переключиться на платный или сменить площадку.
Остальное
В версии 1.12 обновили TypeScript до 4.1.2 с поддержкой декораторов. Напомню, что метеор сам умеет собирать typescript проекты. Вам нужен tsconfig только для вашей IDE!(иногда нужно изменить поведение сборщика, например aliases, это можно сделать с помощью babelrc, так как под капотом метеор использует babel)
Пакет
http
считается устаревшим. Используйте fetch.Можно задавать поля и БД, которые автоматически будут пушиться на клиент после авторизации. PR.
Вместо
// Server Meteor.publish('userData', function () { if (this.userId) { return Meteor.users.find({ _id: this.userId }, { fields: { other: 1, things: 1 } }); } this.ready(); }); // Client Meteor.subscribe('userData');
Достаточно
// Server Accounts.setDefaultPublishFields({ other: 1, things: 1}); // + username:1,profile:1,emails:1 если нужно
Что дальше?
Дальше Tree Shaking, удаление устаревшего кода и другое.
Статьи и ссылки
Why choose Meteor (or not) for your next project? (eng)
После публикации результатов StateOfJS 2020(кстати, сам сайт написан на метеор-е) внутри комьюнити метеор-а завязалась дискуссия насчет позиции Meteor в рамках опроса. Кто-то увидел крах метеора, кто-то - надежду. Один из активных участников форума Jan Küster написал хорошую статью по поводу того, кому подходит метеор.
Добавляем поддержку PWA
Репозиторий содержит step-by-step инструкции по подготовке и настройке вашего метеор проекта. Тема PWA достаточно популярна сейчас, поэтому обязательно посмотрите. Из плюсов выделю поддержку Hot Code Push (читай "непрерывное обновление приложения"), возможность создать приложение для Windows/OSx/Linux без electron-a.
Awesome Meteor List
Данный топик на форуме содержит список полезных ссылок. Инструменты, статьи, книги, компании, использующие Meteor.
Присоединяйтесь к сообществу метеора в Slack (eng) или Telegram (рус).