Веб фреймворк Meteor и Electron - в чём разница между ними?

Meteor.js и Electron – кроссплатформенные фреймворки для разработки приложений на JavaScript, Node, HTML и CSS. Я попытался выяснить, какой из этих веб-фреймворков лучший для написания десктопных приложений.

Веб-фреймворк Meteor

Веб-фреймворк Meteor

Meteor — веб фреймворк, который предназначен для создания Javascript-приложений. Для этого фреймворк нужно установить на компьютер и работать с проектами через команды. Он включает в себя API, инструменты разработки, пакеты из Node.js, а также базовую поддержку Javascript-сообщества.

Чтобы начать работать с Meteor, перейдите на официальный сайт фреймворка и установить его на ПК (есть версии для Windows, Mac или Linux). Затем нужно создать приложение при помощи команды meteor create myapp и запустить meteor. После чего будет запущен локальный сервер для разработки. Если вам нужно больше подробностей, ознакомьтесь с руководством Meteor.

В состав Meteor входит библиотека пакетов Atmosphere, в которой есть всё необходимое для работы с фреймворком. Meteor также позволяет использовать npm. Есть вероятность, что уже в скором будущем пакеты будут переведены на npm. Готовые Meteor-приложения также можно перевести в библиотеки, чтобы использовать их внутри других проектов.

Так как Meteor создает приложения на базе Node, вам потребуется хостинг Node. Лучший хостинг для Meteor js — Galaxy, основанный на Amazon Web Services (AWS). Использование этого хостинга упрощает процесс запуска.

Galaxy позволяет вести логи, собирать аналитику, мониторить, обновлять и постоянно интегрировать что-то новое, переносить проекты, а также пользоваться специальными инструментами.

Создаваемое вами приложение также может быть адаптировано под Android или iOS. Для этого понадобятся дополнительные настройки и инструменты. Но добавить их достаточно просто, а для тестирования можно использовать эмуляторы. Meteor для Windows не поддерживает мобильные сборки (билды). Эта способность есть у Cordova, который является фреймворком, преобразующим веб-языки в мобильные приложения.

На сайте Meteor js Windows сказано, что он позволяет разрабатывать десктопные приложения. Но в действительности это не так.

Meteor подходит для создания того, что запускается на сервере, и работает в браузере или на iOS/Android. Он представляет собой фреймворк, оборудованный модулями и интерфейсами.

Другие фреймворки (например, Ember), предназначены только для front-end разработки. Meteor поддерживает интеграцию и применение большинства популярных Javascript-библиотек и фреймворков (Angular и React).

Meteor js изначально подготовлен к интеграции с MongoDB на серверной стороне и MiniMongo на стороне клиента. Здесь довольно просто создать набор данных и начать использовать их в базе.

Electron

Electron

Electron предназначен для создания кроссплатформенных приложений, работающих как десктопные. Здесь разработка также происходит на JavaScript, HTML, CSS и с использованием различных Node-библиотек. Но создаваемое приложение компилируется в нативные программы для Windows, Linux и Mac. Как раз этой функции не хватает в Meteor.

Electron был разработан командой Github специально для редактора Atom, и с того времени используется для системы лайков в Microsoft и Facebook.

Интерфейс контейнера управляется с помощью Chromium и использует сервер Node.JS для вывода приложения внутри контейнера. Это автономный веб-сервер, работающий во фрейме, который не сильно отличается от вкладки в браузере Chrome.

Данный фреймворк позволяет использовать React, Angular или библиотеки Node. Но здесь не придётся запускать PHP, Ruby или Java.

За счёт Chromium создаваемые приложения осуществляют доступ к определенным функциям операционной системой, будь то диалоговые окна, меню или оповещения. Приложения для Windows можно упаковать и выполнять при помощи установщика. У вас будет доступ к файловой системе и возможность хранить данные различными способами.

Если хотите увидеть Electron в действии, то вы уже делаете это. Многие приложения основываются на этом фреймворке: Slack, Visual Studio Code, Nylas N1, Brave Browser и редактор Atom.

Electron - 2

Что касается приложений под Mac, то вам понадобится версия операционной системы не ниже 10.9, 64bit. В случае с Windows потребуется Windows 7 или выше, 32bit или 64bit (но не версии ARM). Ситуация с Linux зависит от библиотек, но с точностью можно сказать, что приложения будут работать на Ubuntu 12.04 (и выше), Fedora 21 и Debian 8.

Для хранения данных предусмотрено множество вариантов. Самый простой – LocalStorage. Но его может оказаться недостаточно, так как объём исчисляется в мегабайтах. Следующим по счёту JSON-хранилищем, которое удобно использовать для настроек и состояний называется electron-json-storage. Ещё можно использовать Pouchdb, но доводилось слышать много жалоб на производительность этой СУБД, если код насчитывает свыше 50 тысяч строк.

Идеальным вариантом будет IndexedDB. Для работы с ней есть различные инструменты и API, вроде Dexie.js. Здесь даже есть локальные хранилища для БД, вроде NeDB.

Electron компилирует десктопные приложения под Windows, Linux и Mac. Meteor js обучение показало, что он создает веб-приложения с возможностью адаптации под iOS и Android с помощью Cordova.

Возникает очевидный вопрос: могу ли я создать Meteor-приложение, но запустить его как контейнер Electron? Ответ – да!

Загвоздка в том, что вряд ли для этого существует удобный способ. Есть много разных методов. Лучше начать изучать этот вопрос с форумов Meteor. Также можно обратиться к Electrometeor – проекту для запуска Meteor в Electron. Но учтите, что этой утилите уже несколько лет. Я не знаю, работает ли она с последними версиями Meteor.

Я бы и сам хотел попробовать скомбинировать два этих фреймворка. Результатом такого слияния должно стать приложение, которое будет работать в веб, компилироваться под iOS и Android, а также работать на всех десктопных операционных системах. При этом все варианты реализации будут основываться на одной и той же базе исходного кода.

Конкурентов Electron не так и много. Среди них можно выделить NW.js (прежнее название «node-webkit»). Оба фреймворка построены на движке V8 Chromium JS, но Electron лучше с точки зрения функционала.

Есть и другие способы скомпилировать создаваемые приложения под несколько платформ, но Electron лучше всего подходит для работы с HTML, JS, CSS и Node. Xamarin, к примеру, делает всё то же самое, но на C#.

Сильнейшим конкурентом Meteor js Windows считается Express – фреймворк также основанный на Node.js. В дополнение к Express можно использовать Feathers, который добавляет новые модули и функции для разработки приложений в режиме реального времени.

Meteor – фреймворк для разработки, тестирования, профилирования, запуска, обновления и мониторинга полноценных веб-приложений. С помощью Cordova можно адаптировать любой проект под iOS или Android. После этого можно превратить приложение в полноценную десктопную программу, работающую в Windows, Mac и Linux.

Учтите, что Meteor подходит только для работы с маленькими приложениями.

Electron можно использовать, если необходимо разрабатывать кроссплатформенные десктопные приложения, работающие как офлайн, так и онлайн. При этом желательно чтобы разработка велась на JavaScript, HTML, CSS, Node с использованием библиотек npm. Electron является простым Node-сервером, работающим в контейнере Chromium на движке JavaScript V8. Теоретически, в нём можно запускать любые старые Node-приложения, независимо от того, разработано оно на Meteor js или нет.

Если вы разработали приложение при помощи Electron, а затем хотите запустить его в веб, то придётся разобрать его до базового Node-проекта без использования API Electron. Проще будет сначала создать веб-приложение, а затем думать о том, как скомпилировать его для работы на настольных ПК.

Надеюсь, сегодняшняя статья поможет вам определиться, какой фреймворк использовать в следующем проекте – Electron или Meteor js. Я рекомендую познакомиться с обоими фреймворками.

Дайте знать, что вы думаете по этой теме статьи в комментариях. Мы очень благодарим вас за ваши комментарии, отклики, лайки, дизлайки, подписки!

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

Вадим Дворниковавтор-переводчик статьи «What’s the Difference between Meteor and Electron?»