- PVSM.RU - https://www.pvsm.ru -
Давно ничего не слышно по поводу метеора на хабре, хотя фреймворк развивается. Сегодня вышла версия 1.8.3. Хочу рассказать о последних релизах и новостях вокруг метеора.
Для тех, кто не знает, что такое Meteor [1], можно почитать этот пост [2] на хабре.
Кратко — это инструмент, позволяющий разрабатывать клиент-серверные веб-приложения на базе NodeJS + MongoDB + Blaze/React/Vue/Angular/… на языках JS/TS(причем с самыми последними фичами благодаря Babel), без необходимости первичной настройки процесса сборки. На выходе получается обычное nodejs приложение. Установка одной командой [3].
Полный список изменений можно посмотреть на гитхабе, ссылку оставлю в конце. Упомяну о значимых изменениях.
Решил начать с версии 1.5, так как на хабре не были освещены последние релизы, хотя они заслуживают внимания.
Релиз 1.5:
Приведу краткий пример.
Без динамического импорта:
import SomeRouter from 'someRouter';
//Импортируем зависимости, чтобы использовать в роутере.
//Они попадут в главный бандл приложения.
import { HomePage } from './pages/home';
import { ProfilePage } from './pages/profile';
SomeRouter.path('/home', async () => HomePage);
SomeRouter.path('/profile', async () => ProfilePage);
С динамическим импортом:
import SomeRouter from 'someRouter';
//Импортируем зависимости только тогда, когда они нужны.
//Они попадут в отдельные бандлы.
//При загрузке они запишутся в кеш.
//При последующих вызовах будут доставаться из кеша.
SomeRouter.path('/home', async () => (await import('./pages/home')).HomePage);
SomeRouter.path('/profile', async () => (await import('./pages/profile')).ProfilePage);
Таких образом, можно сократить объем первоначального кода, доставляемого клиенту.
Причем не нужно ничего настраивать, достаточно заменить обычный импорт на динамический, и получаем профит. Круто?
Рекомендую почитать статью [4], в которой более подробно разобран механизм работы.
Подробнее в документации [5].
Релиз 1.6 был направлен на обновление NodeJS, npm, а так же добавили поддержку дебага приложений через meteor debug
.
Релиз 1.7:
Метеор сам умеет определять (так как он выступает в том числе и веб сервером) какой браузер у клиента и отдает подходящую сборку приложения.
Например, для тех браузеров, которые не поддерживают нативно async/await, будет отдана legacy сборка с полифилами. Для современных браузеров будет отдана сборка с async/await в коде приложения.
Более подробно тут [6].
От автора: Фича отличная, но время сборки проекта увеличилось примерно в два раза. В процессе разработки это сильно мешает. Поэтому сейчас существует путь [7], позволяющий отключать компиляцию legacy бандла. Так же в версии 1.8 добавили оптимизацию, которая откладывает сборку legacy бандла до момента, пока не соберется modern+server.
Релиз 1.8.2:
.ts
и .tsx
файлов. Подключается к существующему проекту путем добавления пакета:
meteor add typescript
Важно: будет работать только если ваш проект на метеоре 1.8.2+
Так же можно создать новый проект с поддержкой TS с помощью команды:
meteor create --typescript new-typescript-app
Более подробно по поводу ограничений TS в метеоре можно прочесть тут [8].
От автора:
На данный момент нельзя настроить TS через tsconfig.json
или выбрать версию TS(из коробки идет 3.7.3
). По ссылке выше более подробно об этом написано, в том числе и путь обхода данного ограничения.
Проблема была в том, что приложение могло использовать npm пакет, который ориентирован на es6, в то время как приложение должно поддерживать es5.
Релиз 1.8.3 — самый свежий на данный момент.
Из основного: обновили TypeScript до 3.7.3 и «отвязали» jquery
от метеора. Теперь можно ставить jquery
из npm
и в сборку попадет только одна версия(раньше попадала и зашитая в метеор версия).
Полный список изменений доступен на гитхабе [11].
#1 Канадская компания Tiny взялась за Метеор [12]. У Tiny есть успешные проекты. Будем надеяться, что ребята смогут поддержать Метеор и вывести этот замечательный инструмент на новый уровень.
#2 Последнее время «движухи» внутри сообщества было мало из-за пассивности команды Метеора (было обсуждение [13] на гитхабе по поводу слабого взаимодействия с сообществом), основным представителем которой являлся один человек — Ben Newman. Не так давно к команде присоединился евангелист Filipe Névola [14].
Видно, что с приходом нового человека активность на форуме и гитхабе увеличилась(думаю, тут и Tiny подогрел интерес).
#3 Qualia привлекла инвестиции [15] в размере 55 млн $ в раунде С.
CTO считает, что метеор помогает им успешно конкурировать на рынке за счет сокращения времени выпуска продукта/фич на рынок.
We use vanilla Meteor (including Blaze) for all of our products, and the development velocity it provides has been a core competitive advantage. I hope the community finds our success reassuring evidence for the large scale viability of Meteor.
Также стоит упомянуть про интересную тему на форуме [16], в которой обсуждают проекты, сделанные на метеоре.
Эти примеры демонстрируют зрелость продукта и его готовность к использованию «в бою».
По моим наблюдениям, за последние несколько месяцев ситуация вокруг метеора улучшается. Чаще вливаются изменения, быстрее приходят ответы на гитхабе.
Радует то, что сообщество продолжает делать различные интеграции и помогает улучшать проект. Например, можно попробовать Svelte [17].
Очень надеюсь, что Tiny в ближайшее время озвучит состав новой команды, как и планы на ближайшее время.
Активности явно стало больше, что не может не радовать. Ждем релиза 1.9 [18] и дальнейших шагов со стороны Tiny.
Полезные ссылки:
Автор: afrokick
Источник [24]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/340576
Ссылки в тексте:
[1] Meteor: https://www.meteor.com
[2] этот пост: https://habr.com/ru/post/141834/
[3] одной командой: https://www.meteor.com/install
[4] статью: https://blog.meteor.com/dynamic-imports-in-meteor-1-5-c6130419c3cd
[5] документации: https://docs.meteor.com/packages/bundle-visualizer.html
[6] тут: https://blog.meteor.com/meteor-1-7-and-the-evergreen-dream-a8c1270b0901
[7] существует путь: https://github.com/qualialabs/one
[8] тут: https://github.com/meteor/meteor/tree/devel/packages/typescript
[9] тут: https://github.com/meteor/meteor/pull/10603
[10] официальном анонсе: https://blog.meteor.com/announcing-meteor-1-8-2-13eab70a4bec
[11] гитхабе: https://github.com/meteor/meteor/blob/devel/History.md
[12] Канадская компания Tiny взялась за Метеор: https://blog.meteor.com/a-new-chapter-for-meteor-7b684320be4c
[13] обсуждение: https://github.com/meteor/meteor/issues/10477
[14] к команде присоединился евангелист Filipe Névola: https://forums.meteor.com/t/im-joining-meteor-as-developer-evangelist/50613
[15] Qualia привлекла инвестиции: https://forums.meteor.com/t/qualia-55-million-series-c/51078
[16] интересную тему на форуме: https://forums.meteor.com/t/state-of-meteor/48008
[17] Svelte: https://github.com/CaptainN/meteor-svelte-starter
[18] релиза 1.9: https://github.com/meteor/meteor/pulls?q=is%3Aopen+is%3Apr+milestone%3A%22Release+1.9%22
[19] форум: https://forums.meteor.com
[20] документация: https://docs.meteor.com
[21] План развития: https://github.com/meteor/meteor/blob/devel/Roadmap.md
[22] Slack: https://meteor-community.slack.com
[23] Telegram: https://t.me/joinchat/B8hRLw0BbqbCaMBUKx2lrg
[24] Источник: https://habr.com/ru/post/480766/?utm_campaign=480766&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.