Meteor js і Electron – кросплатформені фреймворки для розробки програм на JavaScript, Node, HTML і CSS. Я спробував з’ясувати, який з фреймворків кращий для написання десктопних додатків.

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

У чому різниця між Meteor і 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.

У чому різниця між Meteor і Electron?

Що стосується додатків під 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?» був підготовлений дружною командою проекту Сайтостроение від А до Я.