Pull to refresh

О Meteor подробно: почему это будущее веб-разработки

Reading time4 min
Views22K

Что такое Meteor?


Это не очередной javascript фреймворк. Ставить его в один ряд с derby, sails, angular или backbone некорректно. Meteor — это платформа для создания модульных высокоинтерактивных клиент-серверных приложений. Пусть это звучит слегка напыщенно и напоминает маркетинговый булщит слоган, но зато по сути очень точно отражает миссию и текущее состояние Meteor. Буквально несколько дней назад Meteor API выпустил первую стабильную версию (1.0).

Официальную информацию можете почитать на портале www.meteor.com, а я же хочу рассказать об особо горячо любимых мной фичах.

  1. Пишем логику на одном языке — результат работает на всех платформах: сервер, браузер, cordova (Android, IOS). Естественно, без особенностей не обходится, но это — мелочи жизни. Apple и Google видят в cordov'е большой потенциал и занимаются развитием поддержки этой технологии: Apple allows hot code push in mobile apps; Новый Chromium WebView теперь обновляется через Google Play и поддерживает Web Components.

  2. В руководстве проекта — умные и опытные разработчики, которые понимают ценность сообщества, работа с которым построена на твёрдую пятёрку. Ежемесячные devshop-события в штаб-квартире в SF, поддержка через stackoverflow, отличное и всегда актуальное описание API. Отдельно хочу отметить грандиозное событие — Worldwide Meteor Day, посвящённое выходу первой версии. В России, кстати, событие проводится в 2 городах: в Москве и Курске.

  3. Удобное асинхронное серверное программирование благодаря встроенному Fibers. В 99% случаев при работе с Meteor вы пишете обычный синхронный код, и он работает асинхронно! Странно? Ничего странного: каждый вызов серверного метода работает в своём Fiber'e и не влияет на работу остальных вызовов. Это нереально упрощает структуру кода: любые обращения к БД и другим внешним ресурсам пишутся в синхронном стиле. Недавно смотрел на кусочек кода хорошо написанного обычного асинхронного node.js-приложения, — и у меня на глаза навернулись слёзы. Если кто-то ещё не знаком с Fibers, — настоятельнейшим образом рекомендую!

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

  5. Не менее крутая абстракция для вызова серверных методов, выглядящая как вызов асинхронной функции с callback'ом. Забудьте про серверные пути, xhr и сложную структуру кода! В Meteor всё делается очень просто.

  6. Удобный деплой приложений. Особенно если вы только начинаете свой проект: одной командой из консоли ваш проект публикуется на домене .meteor.com; после деплоя можете перенастроить на ваш_домен.com. Если проект вырос и его требуется перенести на профессиональный хостинг, то, опять же, одной командой проект собирается в node.js-приложение с единственной зависимостью — npm.

  7. Все рутинные оптимизации (минификация кода, сборка в один файл) и перекомпиляции (less -> css, coffeescript -> js и проч.) производятся автоматически и практически без настройки (прощай новорождённый gulp и уродливый grunt). Для некоторых операций требуется установить пакет (package), что тоже достигается однократным вводом консольной команды.

  8. Протокол DDP, призванный заменить REST API. Это очень простой но мощный протокол, основанный на EJSON (расширенный JSON). DDP поддерживает RPC и двустороннюю передачу данных (туда и оттуда), работает поверх WebSockets и SockJS. А ещё его легко читать, что может потребоваться в случае особо глубоких дебагов. Кстати, если нужен REST API, то никто не запрещает его использовать. Даже напротив, есть подходы на любой вкус. Просто уже не захочется шагать назад.

  9. Best practices enforcement. Html, css, less и coffeescript должны быть валидными (иначе проект не скомпилируется), чёткое разделение между шаблонами (spacebars — наследник handlebars), css и js. Чёткое разделение между только серверным, только клиентским и расшаренным кодом. Система пакетов с явными зависимостями (Meteor, npm, cordova), явным экспортом API и полной изоляцией пакетов — мечта для node.js программистов!


И ещё много плюшек, реализованных без странных дизайнерских решений. В итоге получаем инструмент, который позволит решать задачи не отвлекаясь на рутину. Если вы сейчас выбираете node.js фреймворк для вашего будущего проекта, без колебаний останавливайтесь на Meteor — ваши мучения прекратятся, а волосы станут мягкими и шелковистыми.

Литература




Для тех, кто не выдержал и пролистал до конца: Meteor — наикрутейшая вещь. Для разработчиков: начинайте работать с ним сейчас, потому что завтра Meteor-разработчики станут очень востребованными. Для бизнесменов: один Meteor-разработчик заменит frontend, backend, IOS и Android разработчика; нет, это не шутка: примеры успешных проинвестированных и даже (некоторых) проданных проектов: https://respond.ly/, http://versoapp.com/#verso, http://www.classcraft.com/, http://blonk.co/, https://lookback.io/.

Boo!
Tags:
Hubs:
-6
Comments73

Articles