Когда я впервые узнал об инфраструктуре Meteor JavaScript, я увидел, что кто-то написал: «Meteor для Node.js, как Rails для Ruby», и я думаю, что это хорошее сравнение. Несколько лет назад Rails был новой горячей вещью в Интернете, которая привнесла некоторую полезную «магию» в процесс разработки, чтобы сделать программирование в Интернете более доступным и приятным. Из бесчисленных новых фреймворков, появившихся в последнее время, ни одна не заставила меня почувствовать, как Rails сделал так же, как Meteor — фреймворк, который вы должны серьезно рассмотреть для использования в ваших будущих проектах. Вот несколько причин, почему.
1. Ваши приложения по умолчанию в режиме реального времени.
В последнее время такие компании, как Twitter и Facebook, переходят на сеть в реальном времени. Это неизбежно, что раньше, чем вы, вероятно, ожидаете, пользователи будут ожидать, что веб-приложения будут работать практически мгновенно. Я предполагаю, что уже есть пользователи, которые вздрагивают, когда отдельная загрузка страницы требуется для простых задач, таких как изменение настроек и выход из системы.
Проблема в том, что создавать веб-приложения в реальном времени сложно. Или, по крайней мере, так и было. Метеор в реальном времени встроен в его ядро. Когда база данных обновляется, данные в ваших шаблонах обновляются. Когда пользователь нажимает кнопку или отправляет форму, действие происходит немедленно. В подавляющем большинстве случаев это даже не требует дополнительных усилий. Вы создаете веб-приложение, как обычно, и из коробки оно происходит в реальном времени.
Некоторое время назад, люди в Метеоре выпустили скринкаст, демонстрирующий эти функции в реальном времени , и это очень стоит посмотреть, но есть ряд производственных приложений, которые еще лучше демонстрируют разницу в Метеоре:
Это тоже небольшой образец.
2. Вы можете развиваться только с одним языком.
Одна из неприятных сторон работы веб-разработчика — необходимость носить различные шляпы. Вам нужно подумать о клиентской части, серверной части и базе данных, а затем есть еще миллион деталей, которые вытесняют последний дюйм ваших умственных способностей. Метеор упрощает этот процесс, сокращая объем того, что вам нужно учитывать, позволяя вам создавать и управлять внешним интерфейсом, внутренним сервером и базой данных, используя только JavaScript.
Например, вот как мы создаем «коллекцию» — эквивалент таблицы SQL — в Meteor:
BlogPosts = new Meteor.collection('posts');
Таким образом, мы можем создать коллекцию со знакомым синтаксисом, а также управлять коллекцией со знакомым синтаксисом. Вот как мы вставляем данные:
BlogPosts.insert({ title: 'Hello World', content: 'This is the content.', published: true });
Есть еще одно преимущество в написании всего приложения на одном языке. Одна строка кода может выполняться как на клиенте, так и на сервере, и выполнять разные действия в любой среде. Вот почему это важно:
Когда оператор для создания коллекции выполняется на сервере, он, как и ожидалось, создает коллекцию. Но когда тот же оператор выполняется на клиенте (что он будет делать по умолчанию), он создает чисто локальную коллекцию в браузере пользователя. Затем пользователь напрямую взаимодействует с локальной коллекцией, поэтому данные на его экране могут мгновенно меняться, в то время как локальная и серверная коллекции синхронизируются в фоновом режиме.
Это не требует особого отношения. Вы пишете одну строку кода и получаете множество функций, а также возможность использовать знакомый синтаксис на протяжении всего цикла разработки.
3. Вы можете сэкономить много времени с помощью умных пакетов.
Допустим, вы хотите создать систему учетных записей пользователей в проекте Meteor. Как вы можете подойти к этому? Если вашей первой мыслью было: «Ну, я бы создал коллекцию для данных пользователя», то вы уже слишком задумывались.
В Метеоре мы создаем систему учетных записей следующим образом:
meteor add accounts-password
Мы запускаем эту команду в терминале, и Meteor добавляет один из встроенных «умных пакетов» в проект. Этот конкретный пакет создает систему учетных записей, которая ожидает электронную почту (или имя пользователя) и пароль. Но что, если мы хотим позволить пользователям зарегистрироваться с их учетной записью Twitter? Тогда мы могли бы написать:
meteor add accounts-twitter
Или с их учетной записью Google:
meteor add accounts-google
Или Facebook:
meteor add accounts-facebook
Мы могли бы даже выполнить все эти команды, чтобы наши пользователи могли выбирать, как они хотят зарегистрироваться.
Meteor также предоставляет пакет accounts-ui
, который создает интерфейс этой системы учетных записей, и для этого требуется только одна другая команда:
meteor add accounts-ui
С нашей системой учетных записей мы можем делать все, что нам разумно делать при работе с веб-приложением, например, проверять, вошел ли текущий пользователь в систему с помощью одного из наших шаблонов:
{{#if currentUser}} <p>You're logged in.</p> {{else}} <p>You're not logged in.</p> {{/if}}
Или перемещайтесь и Meteor.users
коллекцией Meteor.users
, которая является коллекцией, Meteor.users
Meteor для хранения данных наших пользователей.
Умные пакеты предназначены не только для учетных записей. Уже доступен целый ряд из них, и, скорее всего, в пути, и все они позволяют вам делать что-то крутое, включая:
- Написание ваших приложений на CoffeeScript.
- Автоматическая компиляция LESS файлов в CSS.
- Интеграция дополнений, таких как D3.js и Bootstrap.
Но если у умных пакетов нет того, что вам нужно, то, вероятно, вас охватит растущая библиотека сторонних пакетов.
4. Сообщество чрезвычайно поддерживает.
Ничто так не привлекает меня к новой структуре или технологии, как активное и энергичное сообщество. Я считаю, что если сообщество активно, то:
- Там будет много подробной документации.
- Я потрачу меньше времени, чтобы освоиться с основами.
- Технология не попадет в тупик в ближайшем будущем.
К счастью, сообщество Метеор уже является одним из его величайших активов. Существует масса полезных ресурсов, которые породили любовь людей к этой структуре, в том числе:
- Кратер , Reddit-подобный сайт для отслеживания того, что происходит в мире Метеор.
- Evented Mind , обучающий видео сайт для разработчиков среднего уровня, желающих глубже понять, как работает Meteor.
- Kadira , приложение для отслеживания производительности, которое простое в использовании и имеет разумный бесплатный план для начала работы.
Официальный канал YouTube для Meteor содержит ряд выступлений на встречах Meteor, и есть множество блогов, где можно найти советы и учебные пособия:
- Метеор Советы (хорошо, это мое)
- 30 дней с метеором
- Откройте для себя Метеор
- Метеор Хаки
- Gentlenode
Но если вы все еще не удовлетворены тем, что доступно, Стефан Хоххаус ведет огромный список ресурсов Метеор , в которых есть что-то для каждого.
5. Он оптимизирован для счастья разработчика.
Почти каждая структура позиционирует себя как лучший и более приятный способ работы. Что я ценю, тем не менее, внимание Meteor к деталям, в котором он придерживается своего обещания оптимизации для счастья разработчиков.
Возьмите этот код, например:
<head> <title>Your Cool Meteor App</title> </head> <body> {{> myCoolTemplate}} </body> <template name="myCoolTemplate"> <p>Hello world.</p> </template>
Это базовый интерфейс для приложения Meteor с шаблоном, включенным между тегами body
. (Для создания шаблонов Метеор использует пробелы — синтаксис в стиле Handlebars.)
Но обратите внимание, что:
- Мы не включили
html
теги. - Мы не включили файлы CSS.
- Мы не включили файлы JavaScript.
… и это потому, что нам не нужно делать эти вещи, потому что Метеор заботится о них за нас. Это самая важная особенность в мире? Нет. Но это свидетельствует о заинтересованности Meteor в том, чтобы жизнь каждого разработчика была немного проще на каждом шагу.
Другие приятные детали включают в себя:
- Встроенная функция LiveReload, поэтому вам не придется обновлять браузер вручную.
- Свобода структурировать свои проекты так, как вы хотите. Есть стандарты, которым вы можете следовать, но нет строгих правил или соглашений.
- Простая модульность Meteor, которая позволяет вам смешивать и сочетать различные компоненты в случае, если одна часть Meteor вам не по вкусу.
Таким образом, несмотря на то, что Meteor имеет свою долю «магии» и соглашений, призванных облегчить вашу жизнь, вы все равно можете делать выбор исходя из своих личных предпочтений. Это лучшее из обоих миров.
6. Это дружелюбно для начинающих разработчиков.
Что меня удивило в Метеоре, так это то, как быстро я смог начать создавать действительно крутые вещи. Я слышал, что люди называют систему «легкой», но обычно определение этого слова другими людьми отличается от моего. В этом случае они были правы:
Метеор — одна из самых простых рамок для начинающих.
Это все еще программирование, и вы захотите ознакомиться с синтаксисом JavaScript — переменными, циклами, условными выражениями, JSON и т. Д. — но вам не нужно быть ниндзя JavaScript, чтобы начать. Вам даже не нужен предварительный опыт создания веб-приложений (это отличный выбор для разработчиков, желающих улучшить свои навыки). Возможно, вы не сразу поймете все концепции, но это не помешает вам насладиться практической стороной вещей.
Что касается того, почему Meteor так хорошо подходит для начинающих разработчиков, то в основном по тем же причинам, которые я рекомендую Meteor в целом:
- Вам нужно знать только один язык.
- Есть тонна общественных ресурсов.
- Он оптимизирован для счастья разработчиков.
Поэтому, даже если вы наткнетесь на небольшой горб, изучая Метеор, просто продвиньтесь немного дальше, и я думаю, вы обнаружите, что этих горбов мало и они далеко друг от друга.
7. Это впереди технической кривой.
Как я уже говорил ранее, сеть становится средой реального времени, но изменения не произойдут исключительно из-за действий крупных компаний с большими бюджетами. Сдвиг произойдет, когда станут доступны инструменты, позволяющие небольшим командам и отдельным разработчикам быстро и легко создавать приложения в реальном времени. Метеор — одна из первых волн этого инструмента, и его подход «все в одном», несомненно, сделает его крупным игроком в ближайшие годы.
Люди в Метеоре заявили о своей долгосрочной миссии , и, прямо скажем, их миссия огромна:
… Создать новую платформу для облачных приложений, которая станет столь же повсеместной, как и предыдущие платформы, такие как Unix, HTTP и реляционная база данных.
Могут ли они это осуществить? Конечно, никто не может сказать с абсолютной уверенностью, но у них есть финансирование , сообщество и вечно важный баланс: он хорош для разработчиков и для конечных пользователей. Так что, по крайней мере, они на правильном пути (и это трек, на котором я рад присоединиться к поездке).
Вывод
На момент написания этих слов Метеор еще молод в версии 0.8.2, но релизы будут большими и быстрыми, а целый ряд впечатляющих приложений, созданных в Метеоре, уже запущен и используется в сети. Ваша конкретная ситуация будет определять, подходит ли конкретный фреймворк для вас и ваших творений, но каждый разработчик обязан сам по крайней мере поиграть с Meteor в течение дня или двух. Я давно не получал такого удовольствия от программирования в сети, и есть большая вероятность, что вы будете чувствовать то же самое.