Статьи

Быстрая разработка веб-приложений с помощью Meteor

Конечный продукт
Что вы будете создавать

Meteor предоставляет вам быстрый рабочий процесс разработки, который будет создавать изоморфные веб-приложения, которые «просто работают». Архитектура Meteor действительно прекрасна тем, что она будет обновлять всех клиентов, подключенных к вашему приложению одновременно, прямо из коробки. Это имеет огромное значение для создания реактивных веб-приложений.

Метеор построен с учетом удобства использования, и, к счастью, эта философия реализована с самого начала.

Установка так же проста, как выполнение следующей команды в системах Linux / Mac OS X:

1
curl https://install.meteor.com/ |

Пользователи Windows могут скачать официальный установщик .

Это делается в командной строке с помощью инструмента meteor . Чтобы создать новое приложение с именем my_meteor_app в вашем домашнем каталоге, сделайте следующее:

1
2
3
$ meteor create ~/my_meteor_app
$ cd ~/my_meteor_app
$ meteor

Теперь вы сможете получить доступ к своему метеорному приложению через http: // localhost: 3000 — порт 3000 по умолчанию.

По умолчанию у вас будут созданы следующие файлы:

1
2
3
4
~/my_meteor_app:
├── my_meteor_app.css
├── my_meteor_app.html
└── my_meteor_app.js

Файл my_meteor_app.html содержит разметку, необходимую для отображения страницы — Meteor использует синтаксис в виде фигурных скобок на руле. Весь код в ваших HTML-файлах компилируется с помощью компилятора Meteor’s Spacebars. Пробелы используют операторы, {{#each}} двойные фигурные скобки, такие как {{#each}} и {{#if}} чтобы позволить вам добавить логику и данные в ваши представления.

Вы можете передавать данные в шаблоны из своего кода JavaScript, определяя помощников, и для итерации массивов мы можем использовать {{#each items}} .

Файл my_meteor_app.js содержит как JavaScript, необходимый для запуска клиента, так и сервера. В этом файле могут быть указаны любые события для клиента или директив.

Файл css предназначен для стилизации вашего приложения и по умолчанию является пустым.

Meteor анализирует все файлы HTML в папке вашего приложения и определяет три <head> верхнего уровня: <head> , <body> и <template> .

Все внутри любых тегов <head> добавляется в раздел head HTML-кода, отправляемого клиенту, а все внутри тегов <body> добавляется в раздел body, как в обычном HTML-файле.

Все внутри тегов <template> скомпилировано в шаблоны Meteor, которые можно включить в HTML с помощью {{> templateName}} или ссылаться на ваш JavaScript с помощью Template.templateName .

Замените HTML по умолчанию следующим:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<head>
  <title>My Todo List</title>
</head>
  
<body>
  <div class=»container»>
    <header>
      <h1>My Todo List</h1>
      <p>Built Using Meteor Framework!</p>
    </header>
  
    <ul>
      {{#each tasks}}
        {{> task}}
      {{/each}}
    </ul>
     
  </div>
</body>
  
<template name=»task-item»>
  <li>{{text}}</li>
</template>

Здесь мы указываем template и {{#each}} для создания списка маркеров. Завершите пример, добавив в my_meteor_app.js :

01
02
03
04
05
06
07
08
09
10
11
12
13
if (Meteor.isClient) {
  // Code here only runs on the client
  // Assign some tasks to populate your data
  Template.body.helpers({
    tasks: [
      { text: «Plant cucumbers in fresh manure» },
      { text: «Move avocados to larger pots» },
      { text: «Go Fishing with Ben» },
      { text: «Take the wife to yoga» },
      { text: «Cancel tv subscription» }
    ]
  });
}

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

Метеор облегчает работу с данными. В случае коллекций данные доступны в любой части вашего кода, так как они доступны как клиенту, так и серверу. Это позволяет очень легко написать логику представления и автоматически обновлять страницу.

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

Измените файл my_meteor_app.js для использования MongoDB следующим образом:

01
02
03
04
05
06
07
08
09
10
Tasks = new Mongo.Collection(«tasks»);
  
if (Meteor.isClient) {
  // This code only runs on the client
  Template.body.helpers({
    tasks: function () {
      return Tasks.find({});
    }
  });
}

Строка Tasks = new Mongo.Collection("tasks"); говорит Метеору настроить коллекцию MongoDB с именами tasks . Последствия этого в Meteor заключаются в том, что на клиенте создается кэшированное соединение с коллекцией серверов.

Для вставки данных мы можем использовать консоль серверов. Чтобы запустить его из нового окна терминала, cd в каталог вашего приложения и запустите его (это необходимо сделать, пока метеор работает на отдельной вкладке):

1
$ meteor mongo

Теперь, внутри консоли для моно БД вашего приложения, добавьте запись с:

1
db.tasks.insert({ text: «New task from mongo!», createdAt: new Date() });

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

1
Tasks.insert({ text: «straight to mongo from console», createdAt: new Date() });

Ваш список теперь будет обновляться динамически на экране. Откройте отдельное окно браузера в новом экземпляре на рабочем столе. Запустите еще одну вставку в консоль.

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

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

У проекта meteor есть публичный сервер пакетов isobuild . Это позволяет быстро добавить функциональность в приложение Meteor, просто установив пакет с помощью синтаксиса meteor add <package name> .

Meteor также может добавлять пакеты npm помощью синтаксиса meteor add <package name> . Давайте сделаем наш показ немного лучше в нашем предыдущем примере, добавив пакет moments для удобного форматирования даты.

1
$ meteor add momentjs:moment

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

Отредактируйте шаблон HTML следующим образом:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
<head>
  <title>My Todo List</title>
</head>
 
<body>
  <div class=»container»>
    <header>
      <h1>My Todo List</h1>
    </header>
 
    {{> todo}}
 
  </div>
</body>
 
<template name=»todo»>
  <ul>
    {{#each tasks}}
      <li>{{text}} {{createdAt}}</li>
    {{/each}}
  </ul>
</template>

Теперь мы обновляем наши вспомогательные функции в файле my_meteor_app.js :

01
02
03
04
05
06
07
08
09
10
11
12
13
Tasks = new Mongo.Collection(«tasks»);
 
if (Meteor.isClient) {
  // This code only runs on the client
  Template.todo.helpers({
    tasks: function () {
      return Tasks.find({});
    },
    createdAt: function () {
      return moment(this.createdAt).fromNow();
    }
  });
}

Переключитесь в окно браузера, и пока в терминале все еще работает команда meteor вы увидите обновленный список с моментами, обеспечивающими измерение времени. Ницца!

Добавление аутентификации OAuth в ваше приложение теперь действительно просто. Этого можно достичь, просто добавив два пакета с помощью следующей команды:

1
2
$ meteor add accounts-google
$ meteor add accounts-ui

После добавления этих пакетов в ваше приложение вы можете просто добавить встроенный шаблон {{> loginButtons}} в файл my_meteor_app.html . При перезагрузке в браузере вы увидите кнопку для настройки функции входа в Google. Следуйте инструкциям, и вы готовы к работе — это так просто.

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

Если вы хотите узнать больше о Метеоре, продолжайте читать онлайн с их отличной документацией .