CTO/Full-Stack Developer
0,0
рейтинг
11 апреля 2012 в 07:02

Разработка → Meteor — Новый способ создания приложений

Meteor представляет собой набор новых технологий для быстрого создания высококачественных веб-приложений, с которым справятся не только опытные разработчики но даже и новички.

Чистый JavaScript.


Пишите всё приложение полностью на чистом JavaScript. Все API, доступны на клиенте и на сервере — в том числе API базы данных! — Так что один код может легко работать на клиенте и на сервере.

Живые обновления страниц.


Просто напишите ваши шаблоны. Они автоматически обновляются при изменении данных. Meteor поддерживает любой язык шаблонов.

Чистая, мощная синхронизация данных.


Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.

Компенсация задержки.


Когда пользователь вносит изменения, они происходят моментально — без ожидания ответа от сервера. Если сервер отвергает их запросы или выполняет их как-то иначе, клиентская часть будет «пропатчена» тем, что произошло на самом деле.

Горячая замена кода.


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

Чувствительный код выполняется в привилегированной среде.


Вы можете написать весь ваш код на JavaScript. Пользовательский интерфейс работает в вашем браузере. Важные функции выполняются в привилегированной серверной среде.

Полностью автономные установщики приложений.


Одна команда для компиляции всего приложения в архив. Распакуйте его везде, где есть node.js, запустите одну команду, и вы в эфире. Вы никогда не зависите от хостинг-провайдера, у вас есть весь код для платформы.

Взаимодействие.


Вы можете подключить к Meteor все что угодно, от нативных мобильных приложений, приложений с существующей базой данных до Arduino. Все это можно осуществлять через DDP протокол.

Смарт-пакеты.


Смарт-пакеты Meteor являются на самом деле маленькими программами, которые могут внедрять код на клиенте или на сервере, или даже хуки в установщики для предварительной обработки кода. Большое внимание было уделено тому, чтобы ядро Meteor имело минимальный набор зависимостей, для того чтобы вы могли использовать ваши любимые шаблоны, тестирование, или структуры DOM манипуляции.

Ссылки:


meteor.com
docs.meteor.com
meteor.com/faq
meteor.com/examples
meteor.com/screencast
github.com/meteor/meteor

P.S. Сам я узнал об этом пару часов назад и уже задеплоил примерчик тут (для тех, кому хочется посмотреть что к чему, но лень возиться)
Инструкции по вышеприведенному примеру тут.
Хотелось бы почитать мнений хабровчан об этом Meteor.
Eugene @MechanisM
карма
46,5
рейтинг 0,0
CTO/Full-Stack Developer
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

Комментарии (71)

  • 0
    У вас там рейтинг сам меняется, или кто-то кликает и вы данные подтягиваете?)
    • –1
      Кто-то кликает — и они меняются.
      • –1
        интересная вещь Meteor, сходу мало что понятно, надо будет посмотреть подробнее)
        • –1
          Этот пример работает с базой MongoDB. исходный код примера можно посмотреть тут.
        • –1
          Смахивает на NodeJS
          • +8
            оно на NodeJS и работает
  • +8
    colors.meteor.com уже лежит.

    За весь скринкаст ни слова не сказали про то, как оно работает вообще. Кругом магия, все само.
    • 0
      Не удивительно что лежит. На HN новость о Meteor в топе. И и во многих блогах начали появляться статьи об этом фреймворке и много кто сейчас все это пробует.
      Насчет магии согласен. Сам пока не особо вкуриваю как там что работает))
    • +9
      Достаточно запустить пример, чтобы все стало ясно. Там раз в секунду, а то и чаще идет тупой POST-запрос через Ajax на сервер.

      То есть вот это:
      Пишите ваш код клиентской части, как если бы она была запущена на сервере, и имела прямой доступ к базе данных. Больше не придется получать данные через REST.

      — это маркетинговая чушь. Пацаны просто не разобрались, что такое REST и зачем он нужен.
      • +4
        Да я уже почитал сырцы и проверил как оно работает. Все равно, оставило больше вопросов, чем ответов.

        Странная задумка вцелом. Не очень понятно на кого расчитано.

        С одной стороны, «вау, как круто, я вот тут пишу джаваскрипт лапшу в файлик, а оно само за меня все перегружает и рисует», а с другой все эти темплейты на Handlebars, нода с зависимостями — все это не для новичков-школьников.

        Опытный программер не станет это использовать, пока не поймет, как все внутри устроено. А когда поймет, тоже скорее всего не станет. А неопытный тупо не разберется, как с этим работать.

        Но демка, конечно, красивая и впечатлающая, нечего сказать.
      • +4
        Почему не websocket?
        • +2
          кроме websockets можно еще использовать long polling, server-sent events, местами forever frames. думаю, разработчики должны будут дойти до этого
          • 0
            Лонг пулинг в данном месте плох, ибо не держит постоянного соединения, а события происходят раз в секунду, собственно, ни какого ожидания (чем и знаменит лонг-пулинг) не происходит, для этого случая лонг-пулинг мало чем будет отличаться от долбежки постами. SSE и сокеты — правильное решение для любого случая, а фреймы — для совместимости со старыми браузерами.
          • 0
            Ага, и получится nowjs. Другой вопрос — зачем дублировать, если его уже и так широко используют? :)
      • 0
        Судя по главному сайту, у них long polling с таймаутом в 25 секунд. А думать пока не знаю что, время покажет ;)
      • 0
        яростно плюсую. REST это офигенно, какие ему могут быть замены? Оо
  • –1
    Я так понял, под Windows работать не заставить?
    • +2
      Да, потому что установка производится shell-скриптом.

      Это довольно глупо, потому что node.js работает под Windows, так что они могли бы прибегнуть к помощи npm и сделать своё средство кросс-платформенным, кабы пожелали.

      Правда, может быть, они употребляют такие модули, которые не кросс-платформенны до сих пор — не портированы под Windows? Список пакетов, на которые Meteor полагается, лежит в соответствующей папке открытого исходного кода на сайте GitHub, так что желающие могут проверить эту версию их побуждений.
      • +2
        Да собственно то что на windows не работает не так критично.
      • +1
        насколько я слышал, node.js под Windows пока далёк от идеала и местами серьезно барахлит. или это была деза?
        • –1
          Ситуация меняется буквально каждый месяц. Нестабильная версия 0.5 была практически полностью посвящена Windows, и microsoft официально дружит с нодой. Сейчас сама нода уже вполне нормально себя чувствует под виндой, осталось допилить ключевые части экосистемы, вроде npm. Так что следите за новостями.
          • 0
            На данный момент активно разрабатываю под ноду 0.6 под виндой — полет нормальный. npm пока тоже не подводил.
      • +1
        > Это довольно глупо, потому что XXX работает под YYY, так что они могли бы прибегнуть к помощи ZZZ и сделать своё средство кросс-платформенным, кабы пожелали.

        Вы не представляете сколько в мире десятков тысяч софтин, про которые можно сказать что-то подобное.
        • 0
          Дык и говорите ж, когда видите это. Авось дойдёт.
    • 0
  • –1
    Супер! Даже отдельный пакет для поддержки coffee script есть. Все откладывал изучение ноды, но, видимо, пора начинать :)
  • 0
    У примера какойто глюк. Чужие данные обнавляются если не давить на кнопку какоето время. Если давить сравнительно быстро то только твои клики меняют значение
    • 0
      это фича
  • +17
    > Хотелось бы почитать мнений хабровчан об этом Meteor.

    — за то, что они пользуются только POST'ом,
    — за то, то они используют URI типа xxxx/xxxxx/xhr и xxxx/xxxxx/xhr_send там, где нужно просто использовать GET и POST к xxxx/xxxxx
    — за то, что они называют это добром, мол, REST не нужен
    — за то, что они таким образом решили посрать на все, что предоставляет REST

    убивать
    • –3
      А вы сделали такие выводы только из анализа приведенной демки? Или основательно почитав документацию и посмотрев другие демки?
      • +2
        А смотреть в сорцы уже не модно?
      • 0
        Да, из анализа приведенной демки. Зачем же еще нужна демка, как не для того, чтобы показывать, что можно делать с технологией?
    • +5
      За прямой доступ к БД — тоже убивать.
      • 0
        А вот «Currently the client is given full write access to the collection. They can execute arbitrary Mongo update commands. Once we build authentication, you will be able to limit the client's direct access to insert, update, and remove. We are also considering validators and other ORM-like functionality.»
    • 0
      мочить в сортире. xhr_send, back to php
      • +2
        А ведь многие не верили, что писать говнокод можно не только на PHP
  • +4
    Ух оно и долбит же ж постами сервер.
    Разве такое не через постоянное соединение Server-sent events лучше делать?
    У меня оно живет минутку, а потом на все JSON запросы начинает отвечать 404 до обновления страницы.
    А как с безопасностью, если доступ к базе из клиентской части прямо такой прозрачный?
    Разбираться времени нет, а в статье одна реклама вместо ответов на актуальные вопросы по сути.
    Если кто копать будет глубже чем «ах» и «вау», то напишите:
    1. Разве тут нет кода, который чисто клиентский и чисто серверный? Все может и там и там работать?
    2. Как организовано разграничение прав по доступу к API и аутентификация?
    3. Какая модель безопасности и защита от поддельных клиентов?
    4. При таком активном обмене запросами можно ли SSE прикрутить или sockets?
    5. Что с библиотеками контролов для GUI? Можно ли их подключать и как?
    • 0
      1. Все в одном коде может быть(см. ссылки ниже).
      2. Там есть разграничение: Meteor.is_client и Meteor.is_server.
    • –3
      Это JavaScript — можно всё.
    • 0
      А версия 0.3.2 со статусом Preview что-то может говорить?
  • –1
    Прочитал про метеор. Что-то понятно и что-то нет. Я так понял, там внутри какой-то свой веб-сервер. Не понятно, как он справляется с высокими нагрузками? Имеет ли он что-то общее с NodeJS? И у меня не сложилось мнение, что с помощью метеора скорость разработки резко возрастет.
    • 0
      Там внутри Node, а у Node всегда есть встроенный вебсервер. Справляется с нагрузками по общему принципу Node — за счёт асинхронности ввода-вывода и асинхронной же манеры программирования на джаваскрипте.
  • –2
    >>но даже и новички
    >>Пишите всё приложение полностью на чистом JavaScript
  • 0
    Возможно я не так всё понял, но эта тема похожа с тем, что делал Google, называется всё это вроде pubsubhubup — code.google.com/p/pubsubhubbub/
    • 0
      То, что сделал гугл, вообще вроде как для atom и rss. Meteor работает «поверх» node.js, позволяет писать приложения на javascript (или coffee script), рендеринг шаблонов на клиенте, все данные в json, работа с базой напрямую из клиента (потом введут ограничения на crud, пока вроде их нет), почти отсутствует разделение кода на серверную/клиентскую части + легкий выкат новых версий с обновлением клиентов и т.д.

      Пока еще версия 0.3.2, многое будет улучшаться/развиваться. Фреймворк писали несколько человек полгода. Вообще, почитайте лучше тему на HN, там много интересного.
      • 0
        Если его сочиняли полгода, то это объясняет, почему он вовсе не работает под Windows. Нормально портировали Node на Windows только в ноябре прошлого года, и даже тогда Node был голым движком, оттого что портирование модулей, сочинённых независимыми разработчиками, только началось. Оно и сейчас-то идёт «со скрипом» (например, у модуля node-sqlite3 нет официальной Windows-версии — а ведь это средство чтения баз SQLite, а не хухры-мухры!…).
        • +4
          Если разработчики ноды использут linux или mac, и не используют windows – зачем им делать порт? Просто, по-моему, здесь все зависит от активности windows-сообщества: никто не мешает сделать pull-request с поддержкой windows. Здесь история как с рельсами: да, можно под win, но зачем?
          • –1
            С одной стороны…
            Если разработчики ноды использут linux или mac, и не используют windows – зачем им делать порт?
            Это лень, детка.

            С другой стороны,
            нет официальной Windows-версии — а ведь это средство чтения баз SQLite, а не хухры-мухры!…
            Это опенсурс, детка.

            С третьей стороны, есть такой… подход, что ли — заключается в здравом смысле. Лично я (я не говорю, опять же, что это плохо) не представляю себе ситуацию, когда я захочу хостить NodeJS проект на Windows-сервере. Значит разрабатывать я буду его на какой-нибудь убунте/дебиане, а потом просто задеплою… это позволит просто не столкнуться даже с целым рядом проблем.
          • +2
            Просто, по-моему, здесь всё зависит от активности Windows-сообщества: никто не мешает сделать pull request с поддержкой Windows.
            Есть такой pull request для модуля node-sqlite3. А воз и ныне там.
  • –1
    Фреймворк прикольный.
    Если кому интересно, то для .Net есть более низкоуровневый аналог в виде SignalR
    Вот за вечер не так давно написал демо для лекции по KnockoutJS и SignalR
    todoknockr.apphb.com/Home/History
    • 0
      не назвал бы я SignalR аналогом… с одной стороны SignalR более узкопрофильный (SignalR все-таки library, а meteor — framework), с другой куда мощнее — возраст/опыт.
  • –2
    Это все классно конечно, но как-то не особо понятен смысл подгрузки js на 200кб для обновления одной таблички? Смысл с точки зрения клиента, который, например, зайдет на эту страничку с мобильника с платным трафиком?
  • +1
    Как по мне так: github.com/socketstream/socketstream выглядит получше.
  • 0
    Тем временем кто-то уже добавил Альберта Эйнштейна и Луи Лагранжа.
    Не забываем что это лишь превью фреймворка и сторого судить пока не стоит.
    Этому нашлось объяснение в документации: «В настоящее время клиенты имеют полный доступ для записи в коллекции. Они могут выполнять произвольные Mongo команды. Как только мы добавим аутентификацию, вы сможете ограничивать доступ клиентов для доступа к записи, изменению и удалению. Мы так-же добавим валидаторы и ORM-подобный функционал.»
    • 0
      Имеется ввиду в демку. Изначально были персонажи указанные в исходном коде демки.
    • 0
      Технология — интересная, а пример — никудышный, он не раскрывает преимуществ и фокусирует человека на том, что выбран не правильный метод взаимодействия с сервером, а между тем, технология полезна совсем в других случаях, для написания прикладных приложений со сложной бизнес-логикой. Технология покажет себя полностью когда обмен с сервером не такой частый и периодический, как в примере, а на несколько порядков реже и не по таймеру. Или Вы хотите сказать, что тогда он все равно будет долбить постами каждую секунду?
      • 0
        > ехнология полезна совсем в других случаях, для написания прикладных приложений со сложной бизнес-логикой.

        Пока они не поймут, что такое REST, и чем он хорош именно для сложной бизнес-логики, полезной эта технология не будет

        > Технология покажет себя полностью когда обмен с сервером не такой частый и периодический, как в примере, а на несколько порядков реже и не по таймеру. Или Вы хотите сказать, что тогда он все равно будет долбить постами каждую секунду?

        Тогда она не будет ничем отличаться от десятка других технологий — от Backbone до ExtJS
        • 0
          То, что у них еще сыро и много исканий, это ясно, но это же и не плохо. Если команда или технология прекращает искания и считает, что точно знает, как хорошо, а как плохо, то это значит, что пошли клепать шаблонные закостенелые решения.

          А Вы можете нам всем пояснить, чем REST «хорош именно для сложной бизнес-логики»? Без ссылок, а в 5 строчках, кратко и четко. Я думаю, что как для приведенного в статье примера, так и для сложной бизнес-логики, хорош классический клиент-серверный подход с установлением постоянного соединения и выделением на сервере «состояния» (данных в оперативной памяти, связанных с сессией пользователя).

          А о пользе REST, я не спорю, но REST хорош совсем для другого, для высоконагруженных систем общего пользования, и ограниченного функционала, не прикладных систем. REST — это подход для не динамических приложений, а для массовой надежной выдачи контента или для массового обслуживания однотипных процессов. Вот тогда нет возможности каждому абоненту память выделять, и хранить в ней особо нечего.
          • +1
            > А Вы можете нам всем пояснить, чем REST «хорош именно для сложной бизнес-логики»?

            — отлаженные, понятные и простые принципы работы
            — четкий контроль за многими аспектами работы клиент-серверной системы:
            — стандартизированные ошибки
            — стандартизированные опции, контролирующие взаимодействие клиента и сервера (кэширование, определение формата посылаемых данных, версионность API, MVCC(!) и т.п.)
            — прозрачная (для клиента) масштабируемость
            — стандартизированный API, который неплохо ложится поверх CRUD, если уметь его готовить

            Вместо всего этого авторы предлагают долбить сервер POST'ами и говорят, что это — хорошо :-\

            > REST хорош совсем для другого, для высоконагруженных систем общего пользования, и ограниченного функционала, не прикладных систем.

            Давайте, вы сначала почитаете, что такое REST, а потом будете о нем говорить, хорошо?

            > REST — это подход для не динамических приложений, а для массовой надежной выдачи контента или для массового обслуживания однотипных процессов.

            Большей бредятины я в жизни не видел. Как-будто в динамических приложениях ВНЕЗАПНО изменились запросы к серверу, ага ага. Вы бы хотя бы открыли Firebug и посмотрели, что за запросы этот «мегафреймворк» выполняет.

            > Вот тогда нет возможности каждому абоненту память выделять, и хранить в ней особо нечего.

            Такой возможности нет никогда. Сервера не резиновые
            • 0
              жжошь, согласен.

              >Вместо всего этого авторы предлагают долбить сервер POST'ами и говорят, что это — хорошо :-\
              обработка поста и гета длится одинаковое время — это как бы для заметки. а в остальном поддерживаю.
              REST это унифицированный и самый удобный формат для работы с Ресурсами по HTTP. GET для получения, POST для отправки, DELETE для удаления и тд. Это позволяет четко и решительно работать с бизнес логикой путем массы скаффолдинга, это ЧПУ из коробки, это защита от CSRF придолжном понимании сути реста. Это прекрасно.
  • +1
    Демо выглядит интересно, но не более.
    Скорее всего, данный проект — конь в вакууме; дюже сомнуваюся я, что это выкидыш реального, живого продукта.

    Проект нарушает конвенции экосистемы node.js, на котором построен; я бы на месте разработчиков не попадался на глаза Исааку. Почему было не слепить свои пакеты поверх принятого сообществом и давно уже ставшего официальным npm? Даже в сам проект не удосужились положить package.json с описанием зависимостей, поэтому все зависимости, вместо выкачивания из npm репозитория выкачиваются со своего CDN

    Сам node.js, кстати, тоже берется оттуда. Ага, в бинарном виде.

    Вышеописанное я не могу списать даже на «early stage» проекта. Создать свою систему распространения на коленке было проще, чем использовать готовую и отлично живущую? :\
  • 0
    До Akshell и Wakanda, имхо, пока очень далеко. И открытость решения это не сглаживает.
    • 0
      Это вы о node.js или конкретно о Meteor?
      • 0
        О Метеоре.
  • 0
    Судя по всему это продолжение обещающего быть популярным тренда backend-as-a-service. Вот совсем недавно был http://backlift.com, например, который можно использовать для хостинга backbone.js приложений. Правда не знаю, появилась ли там авторизация и управление пользовательскими сессиями.
  • 0
    > Meteor поддерживает любой язык шаблонов.

    Хм… надо попробовать с monkeylib.markup.
  • +2
    Ой, так это-ж Nitrogen, только на JS и глючный О_о
  • –2
    чем оно лучше dotCloud?
  • +1
    У меня просьба к людям, которые могут изъянятся на нормальнос языке.
    Что это? Чем оно полезно? С чем его можно сравнить? Как это использовать и для чего?

    P.S.
    Всю статью можно было сократить до ссылки.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.