- PVSM.RU - https://www.pvsm.ru -

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

Что такое Meteor?

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

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

  1. Пишем логику на одном языке — результат работает на всех платформах: сервер, браузер, cordova (Android, IOS). Естественно, без особенностей не обходится, но это — мелочи жизни. Apple и Google видят в cordov'е большой потенциал и занимаются развитием поддержки этой технологии: Apple allows hot code push in mobile apps [2]; Новый Chromium WebView теперь обновляется через Google Play и поддерживает Web Components [3].
  2. В руководстве проекта — умные и опытные разработчики, которые понимают ценность сообщества, работа с которым построена на твёрдую пятёрку. Ежемесячные devshop-события в штаб-квартире в SF [4], поддержка через stackoverflow [5], отличное и всегда актуальное описание API [6]. Отдельно хочу отметить грандиозное событие — Worldwide Meteor Day [7], посвящённое выходу первой версии. В России, кстати, событие проводится в 2 городах: в Москве [8] и Курске [9].
  3. Удобное асинхронное серверное программирование благодаря встроенному Fibers [10]. В 99% случаев при работе с Meteor вы пишете обычный синхронный код, и он работает асинхронно! Странно? Ничего странного: каждый вызов серверного метода работает в своём Fiber'e и не влияет на работу остальных вызовов. Это нереально упрощает структуру кода: любые обращения к БД и другим внешним ресурсам пишутся в синхронном стиле. Недавно смотрел на кусочек кода хорошо написанного обычного асинхронного node.js-приложения, — и у меня на глаза навернулись слёзы. Если кто-то ещё не знаком с Fibers, — настоятельнейшим образом рекомендую!
  4. Отлично спроектированная абстракция для работы с данными через коллекции. Коллекции представляют одинаковый интерфейс на сервере и на клиенте, что позволяет реализовывать логику в одном стиле и даже расшаривать код между сервером и клиентом.
  5. Не менее крутая абстракция для вызова серверных методов, выглядящая как вызов асинхронной функции с callback'ом. Забудьте про серверные пути, xhr и сложную структуру кода! В Meteor всё делается очень просто.
  6. Удобный деплой приложений. Особенно если вы только начинаете свой проект: одной командой из консоли ваш проект публикуется на домене .meteor.com; после деплоя можете перенастроить на ваш_домен.com. Если проект вырос и его требуется перенести на профессиональный хостинг [11], то, опять же, одной командой проект собирается в node.js-приложение с единственной зависимостью — npm.
  7. Все рутинные оптимизации (минификация кода, сборка в один файл) и перекомпиляции (less -> css, coffeescript -> js и проч.) производятся автоматически и практически без настройки (прощай новорождённый gulp и уродливый grunt). Для некоторых операций требуется установить пакет (package), что тоже достигается однократным вводом консольной команды.
  8. Протокол DDP [12], призванный заменить REST API. Это очень простой но мощный протокол, основанный на EJSON (расширенный JSON). DDP поддерживает RPC и двустороннюю передачу данных (туда и оттуда), работает поверх WebSockets и SockJS. А ещё его легко читать, что может потребоваться в случае особо глубоких дебагов. Кстати, если нужен REST API, то никто не запрещает его использовать. Даже напротив, есть подходы на любой вкус [13]. Просто уже не захочется шагать назад.
  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/ [23], http://versoapp.com/#verso [24], http://www.classcraft.com/ [25], http://blonk.co/ [26], https://lookback.io/ [27].

Boo! [28]

Автор: eluckme

Источник [29]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/73299

Ссылки в тексте:

[1] www.meteor.com: http://www.meteor.com

[2] Apple allows hot code push in mobile apps: https://www.meteor.com/blog/2014/10/02/Apple-hot-code-push-mobile

[3] Новый Chromium WebView теперь обновляется через Google Play и поддерживает Web Components: http://habrahabr.ru/post/241487/

[4] Ежемесячные devshop-события в штаб-квартире в SF: http://www.youtube.com/user/MeteorVideos

[5] поддержка через stackoverflow: http://stackoverflow.com/questions/tagged/meteor

[6] отличное и всегда актуальное описание API: https://docs.meteor.com/#/full/

[7] Worldwide Meteor Day: http://meteorday.com/

[8] Москве: http://www.meetup.com/Meteor-Moscow

[9] Курске: http://www.meetup.com/Meteor-Kursk

[10] Fibers: https://github.com/laverdet/node-fibers

[11] хостинг: https://www.reg.ru/?rlink=reflink-717

[12] DDP: https://meteorhacks.com/introduction-to-ddp.html

[13] подходы на любой вкус: http://www.meteorpedia.com/read/REST_API

[14] https://www.discovermeteor.com/: https://www.discovermeteor.com/

[15] https://www.meteor.com/install: https://www.meteor.com/install

[16] https://groups.google.com/forum/#!forum/meteor-core: https://groups.google.com/forum/#!forum/meteor-core

[17] https://groups.google.com/forum/#!forum/meteor-talk: https://groups.google.com/forum/#!forum/meteor-talk

[18] https://meteorhacks.com/: https://meteorhacks.com/

[19] https://www.eventedmind.com/: https://www.eventedmind.com/

[20] http://www.solidmeteor.com/: http://www.solidmeteor.com/

[21] https://hackpad.com/Top-Resources-for-learning-MeteorJS-Nrpnr6CHiGs: https://hackpad.com/Top-Resources-for-learning-MeteorJS-Nrpnr6CHiGs

[22] https://github.com/ericdouglas/Meteor-Learning: https://github.com/ericdouglas/Meteor-Learning

[23] https://respond.ly/: https://respond.ly/

[24] http://versoapp.com/#verso: http://versoapp.com/#verso

[25] http://www.classcraft.com/: http://www.classcraft.com/

[26] http://blonk.co/: http://blonk.co/

[27] https://lookback.io/: https://lookback.io/

[28] Boo!: https://ru.wikipedia.org/wiki/%D0%A5%D1%8D%D0%BB%D0%BB%D0%BE%D1%83%D0%B8%D0%BD

[29] Источник: http://habrahabr.ru/post/242113/