Если вы еще не слышали о Meteor, то как раз пришло время для знакомства. Meteor обеспечит вас поддержкой real-time режима в ваших приложениях, а также предоставит full-stack среду разработки под javascript/nodejs. Эта платформа является наиболее «звездной» в числе nodejs-фрейворков(а также входит в 10-ку самых «звездных» репозитариев на Github). Так что же, все эти людей просто ошибаются?
Добавляя Angular-Meteor поддержку, Meteor станет великолепным дополнением для Angular-разработчиков. Вот несколько причин, почему Angular-разработчики должны открыть для себя Meteor:
Сохранение ваших навыков
Изучение Angular не пройдет за один присест, и может немного прокатить вас по эмоциональным горкам. Рисунок из статьи стал весьма популярным, и как Angular-разработчик, вы скорее всего прочувствовали всю прелесть этих перепадов:
Вот теперь-то вы знаете, что такое Angular.js. Когда же вы сталкиваетесь с Meteor в чистом виде, вы вероятно подумаете, что "это не лучший способ опять вернуть меня к handlebars и jquery", или, если начать с Angularjs после Meteor'а — вопрос выглядел бы вот так: "Мне что, придется изучать что-то новое? Ни за что!". Вам не придется; при использовании связки Angular-Meteor вы сохраните все навыки в Angular, и в свою очередь получаете возможность насладиться всеми преимуществами Meteor.
Full stack, как это должно быть
MEAN стек — это только MongoDB, Express, Angular и Node.js собранных воедино, но эта связка не бесшовна. Суровая реальность такова, что вам нужны дополнительные инструменты, чтобы делать всю эту работу: фреймворк для тестирования, система сборки, среда развертывания и другое. Все это всплывает перед разработчиком, которому приходится все как-то связывать, учитывая то, что способов решения данной задачи большое множество.
И в результате каждый MEAN-проект выглядит по-своему. Файловая структура вашего кода, также уникальна, поэтому другим разработчикам потребуется время, чтобы во всем разобраться, когда они увидят ваш проект впервые.
Метеор делает все это намного проще. Быстрый старт, упакованные системы и почти прозрачные драйверы развертывания для типовых проектов, чтобы любой разработчик мог видеть, что где происходит.
Честный изоморфный код
MEAN стек (Mongo, Express, Angualr, Node) обещал поставлять javascript везде. Да, javascript есть везде, но код не всегда прямолинеен. Это правда, вспомните хотя бы, как вы взаимодействуете с данными от REST-сервера.
- Вы создаете REST точки приложения
- Вы обращаетесь к точкам приложения, используя $http.get (‘myurl/endpoint’)
- Вы добавляете ответ к вашей модели: var data = response;
Работа с Meteor и Angular отличается. Вы действительно можете писать такой код, который будет работать как на клиенте, так и на сервере. У вас нет необходимости использовать сторонние решения типа browseify. Достаточно написать один раз: var data = Data.find (‘my data’);
Приложения Real-Time стали проще
Есть множество причин, почему вы любите Angular. Ведь он не зря носит название фреймворк-супергерой. Одной из главных причин является двустороннее связывание данных.
Метеор на его стороне, и предоставляет вам "первый класс" по связыванию данных между клиентом и сервером в режиме реального времени. Это часть из семи принципов Meteor: база данных везде, данные "на проводе", незаметная компенсация.
Так что же Angular или Meteor? Не стоит выбирать!
Использование Angular-Meteor на клиенте, и Meteor на обеих сторонах, позволит клиенту и серверу находится на одной линии при связывание данных. Все синхронизуется от базы данных на сервере к пользовательскому интерфейсу и обратно.
Используя Meteor, вы действительно можете применять Angular не только при работе с REST-сервисами вашего приложения(или даже сокета транспортировки), но вполне сможете ускорить механизм создания современный одностраничных приложений, как Gmail, без потребности в деньгах Google.
История о двух сообществах
За 6 лет существования, Angular в значительной степени был принят и выстроил огромное сообщество соавторов и разработчиков, которые расширяют его экосистему. В тоже время Meteor-сообщество также является быстрорастущим, все больше и больше пакетов добавляются к основному пакету от MDG (MEteor Development Group). Так зачем же играть в одной команде, когда вы можете выиграть на обеих сторонах?
Звучит интересно?
Uri Goldstein, создатель Angular-Meteor, более подробно рассказывает об этом.
Комментарии (14)
Alexins
14.07.2015 08:37+3А может, всё таки, посмотреть Angular 2 на TypeScript?
На мой взгляд, система более лаконична, чем Angilar 1.x.Drag13
14.07.2015 09:52+1А что делать тем, кто уже работает с Angular.js 1.x? Как обстоят дела с миграцией?
vvovas
14.07.2015 09:52+1Для меня Angular стал тем переломным моментом, когда я сказал себе «стоп!». Помню, я только выучил фреймворк, научился его использовать для создания приложений и тут они говорят, что делают версию 2, которую надо будет учить заново…
Я решил, что с меня хватит всех этих новых разработок и я перестал бежать за новыми технологиями. В итоге я знаю angular 1.4, могу написать приложение, которое мне нужно.
Зачем мне новый фреймворк?Drag13
14.07.2015 09:58+1Я бы не против попробовать Angular 2, хотя бы для того, что бы разобраться какие преимущества он может (или не может) дать.
Alexins
14.07.2015 10:20В плане разработки WEB UI части, считаю себя начинающим. Мой конек — серверная часть.
Решил попробовать Angular 1 и понял, что лучше сразу смотреть на Angular 2.
Нашел более менее нормальный пример, маршрутизации (в git исходный код измен). На мой взгляд, так писать можно. Тем более, что маршрутизация поддерживается внутри любого компонента, а не одного html раздела. Бонус — проверка на авторизацию пользователя.
arvitaly
14.07.2015 10:07Почему тогда ты не остался с JQuery?
vvovas
14.07.2015 10:25Понимаете, у меня не такой большой опыт web-разработки — года полтора, до этого я вообще не воспринимал сайты.
Началось все с ASP MVC и полной перезагрузки страницы на любой чих пользователя.
Потом был jquery + ajax. Удобно, перезагружай только нужные вещи. Но вот модели в javascript'е не было. Когда проект был маленький, то была попытка использовать knockout, но использовать не стали, т.к. смысл был непонятен.
Когда проект вырос, то отсутствие модели в js стало проблемой. Вот тут стал изучать, что для этого есть — knockout, angular. За angular зацепился. Наверное из-за синтаксиса — не надо перестраиваться после js+jquery.
На том проекте частично подключили knockout, но я до сих пор работаю только js+jquery.
В своих проектах перешел на angular и не уйду с него пока он полностью решает мои задачи. Нерешаемых пока не встретил.arvitaly
14.07.2015 10:43Когда проект вырос, то отсутствие модели в js стало проблемой. Вот тут стал изучать, что для этого есть — knockout, angular.
Странно, ведь в Angular как раз таки нет работы с моделью. Там есть DI, шаблонизатор (с директивами), сервисы, а вот, как раз таки, модель приходится лепить ручками в сервисах. Ну да, есть $resource и $http, но это очень маленький шажок от JQuery в этом плане?vvovas
14.07.2015 13:13+1Я имел ввиду two-way binding. Я знаю, что его можно реализовать без ангуляра.
Просто на тот момент, когда мне это понадобилось мне попался ангуляр, как решение. Не знаю, возможно он подкупил меня тем, что в нем удобно реализованы какие-то вещи(тот же шаблонизатор) и он дает не просто инструменты, а еще предоставляет архитектуру.
В ангуляре все лежит на своих местах, контроллеры, директивы и т.д. Все разделено.
В jquery такого нет, ты можешь писать как тебе угодно, но пока ты еще только начинаешь осваивать web и не пришел к какому-то «своему» шаблону приложения, получается спагетти-код.
Когда я начинал работу и делал приложение только на ASP MVC, мне не хватало ajax.
Когда я работал с jquery, мне было не понятно зачем иметь модель данных на клиенте, если они есть на сервере.
Когда я понял зачем, я наткнулся на ангуляр.
Я не говорю, что angular лучше jquery. Я просто хотел сказать, что иногда стоит остановиться, если нет явных потребностей в новом инструменте. Если вы отлично владете jQuery и вас все устраиваете — замечательно, вам не нужен angular, ember, react или что-то еще. Я не владел jQuery на отлично, в частности не дошел до понимания как структурировать разрастающийся код. Angular мне в этом помог и стало понятно, что реальных причин двигаться дальше — нет, его хватает.
Dominis
14.07.2015 11:32+4Я гляжу в основном общаются знатоки ангулара, а есть ли здесь знатоки Метеора? Я использую Метеор уже некоторое время, не так давно закончил на нём первый большой (относительно) проект, с ангуларом я знаком очень поверхностно, и потому не могу понять — зачем он может быть нужен в метеоре?
То, что я знаю об Ангуларе:
1. Ангулар делает данные связанными
2. Автоматически перерисовывает шаблоны при изменении данных.
3. Своя событийная модель (свои хендлеры)
4. Умеет обращаться за получением/обновлением данных на сервер.
Что я не понимаю:
1. В Метеоре сделать реактивную переменную просто, это одна из фишек Метеора. Не говоря уже о работе с БД, где подписки на коллекции обновляются так же автоматически. Потому я не понимаю зачем нам нужен Ангуларовский биндинг данных.
2. Перерисовку страницы Метеор так же делает весьма просто и удобно (как правило), зачем перерисовка шаблонов от Ангулара?
3. В Метеоре, на мой взгляд, очень удобный биндинг обработчиков к событиям. И нет большой проблемы сделать кастомные события (при помощи Jquery). Зачем события Ангулара и их обработчики в ангулар-стиле?
4. Большая часть данных которая нужна при работе в Метеоре, это объект пользователя и коллекции из БД, и то и другое легко доступно в любом месте, ангуларовские запросы к серверу не нужны.
В итоге я не понимаю зачем использовать ангулар в метеоре? В самом начале статьи было сказано: «Метеор это хороший бэкэнд для Ангулар-разработчика» — это единственный смысл? Т.е. получается, что это не к Метеору прикрутили Ангулар а наоборот?
Прошу понять меня правильно, я не пытаюсь устроить холивар или просто обгадить идею этой связки — но я действительно не понимаю её плюсов, за исключением одного: «Так проще из ангулар-девелопера сделать еще и сервер-сайд девелопера».iHun
14.07.2015 23:52В итоге я не понимаю зачем использовать ангулар в метеоре?
Тоже этого не понимаю. Тем более странно, что сами разработчики метеора в последний месяц начали активно способствовать совместному использованию метеора со всякими реактима и ангуларами. C тем, что делает ангулар, в существующей системе лучше справляется Blaze — слой в метеоре, отвечающий за рендеринг и реактивные обновления. Единственное преимущество, которое мне приходит в голову — отсутствие необходимости переучиваться — но ведь там и учить-то нечего…Dominis
15.07.2015 00:18Абсолютно согласен, Blaze в 99% случаев работает очень хорошо и прозрачно. Есть некоторые нюансы при специфичных задачах, например когда надо к перестроенным данным выполнить некий код, как пример — инициализировать select2, тут начинаются пляски с бубном. В остальном же blaze очень хорош и весьма прост. Вообще метеор, на мой взгляд, самая простая с точки зрения изучения, система на js, при условии что человек неплохо знает сам язык и его особенности. Ангулар на порядок сложнее.
StreetStrider