Итак, я использую Atom от GitHub в качестве своего текстового редактора чуть больше года назад. Если вы не знаете, это текстовый редактор с открытым исходным кодом, который работает на собственной платформе Electron GitHub . Подводя итог, можно сказать, что Electron позволяет создавать кроссплатформенные настольные приложения с использованием веб-технологий, таких как HTML, JavaScript и CSS. По сути, Electron для настольных компьютеров — это то же самое, что Apache Cordova для мобильных устройств.
Итак, куда я иду с этим? Ну, используя Electron и различные веб-технологии, мы можем создавать кроссплатформенные настольные приложения, которые отлично синхронизируются с Couchbase Server!
Мы возьмем рабочий пример, который я написал ранее, и преобразуем его в отдельное настольное приложение, которое можно распространять на Mac, Windows и даже Linux. В частности, мы рассмотрим учебник по PouchDB с AngularJS, который я написал. Если вы еще не читали этот учебник, я рекомендую прочитать его здесь , в противном случае вы можете сразу перейти к исходному коду учебника для этого руководства.
Установка Electron для разработки на вашей машине
Прежде чем мы сможем связать наше приложение с Electron, мы должны установить его на нашу машину. Мы будем использовать Node Package Manager (NPM) для установки наших зависимостей, поэтому, если вы еще не установили Node.js на своем компьютере, перейдите на веб-сайт Node.js и сделайте это сейчас.
С установленным Node.js выполните следующую команду из командной строки (Windows) или терминала (Linux и Mac), чтобы глобально установить Electron на ваш компьютер:
npm install -g electron-prebuilt
Если вы работаете на Mac или Linux, вам может потребоваться запустить команду от имени администратора. Это можно сделать с помощью sudo, только если это необходимо.
Подготовка электронного контейнера приложений
По большей части вам не нужно вносить какие-либо изменения в ваше статическое веб-приложение (HTML, JavaScript, CSS), чтобы использовать Electron. Однако вам нужно будет настроить несколько файлов, чтобы Electron мог понять ваш проект.
Идите дальше и создайте новый каталог (возможно, на вашем рабочем столе) с именем CouchbaseProject . Внутри этого каталога создайте файлы main.js и package.json . Начиная с файла package.json , добавьте следующий код:
{
"name" : "electron-couchbase",
"version" : "0.0.1",
"main" : "main.js"
}
Согласно документации Electron, важно, чтобы основное свойство использовало имя файла, совпадающее с тем, что вы создали в своем проекте.
Теперь мы можем добавить код в файл main.js нашего проекта . Откройте его и добавьте следующее:
var app = require('app'); // Module to control application life.
var BrowserWindow = require('browser-window'); // Module to create native browser window.
// Report crashes to our server.
require('crash-reporter').start();
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
var mainWindow = null;
// Quit when all windows are closed.
app.on('window-all-closed', function() {
// On OS X it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform != 'darwin') {
app.quit();
}
});
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', function() {
// Create the browser window.
mainWindow = new BrowserWindow({width: 800, height: 600});
// and load the index.html of the app.
mainWindow.loadUrl('file://' + __dirname + '/public/index.html');
// Emitted when the window is closed.
mainWindow.on('closed', function() {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null;
});
});
Чтобы быть справедливым, этот код main.js был скопирован в значительной степени из документации быстрого запуска Electron. Обратите внимание, что различия между ними заключаются в том, что моя версия не отображает Chrome Inspector и что наши веб-файлы будут находиться в общедоступном каталоге нашего проекта.
Кодирование нашего веб-гибридного настольного приложения с использованием Couchbase и Electron
Здесь происходит волшебство. Помните, я говорил вам, что мы будем использовать исходный код проекта AngularJS, PouchDB, Couchbase из предыдущего урока. С CouchbaseProject в качестве нашего текущего рабочего каталога в командной строке или терминале, выполните следующее:
git clone https://github.com/couchbaselabs/pouchdb-angularjs-app public
Приведенная выше команда клонирует предыдущий проект и переименовывает его в общедоступный, чтобы удовлетворить требования, которые мы установили в файле main.js.
Запуск нашего настольного приложения Electron
На данный момент проект должен быть запущен. С CouchbaseProject в качестве текущего рабочего каталога в командной строке или терминале выполните следующее:
electron .
С небольшим количеством удачи это должно начаться. Однако то, что наше приложение работает и сохраняет данные, не означает, что мы синхронизируемся с Couchbase Server. Нам действительно нужно запустить Couchbase Sync Gateway.
Запуск Couchbase Sync Gateway
Couchbase Sync Gateway отвечает за синхронизацию с сервером из нашего локального приложения и с сервера обратно в наше локальное приложение. Он работает с мобильными приложениями, а также, в нашем случае, с настольными приложениями на основе PouchDB. Couchbase Sync Gateway можно скачать здесь .
Когда вы клонировали проект AngularJS / PouchDB из GitHub, в нем также был файл конфигурации Sync Gateway. Не стесняйтесь использовать этот файл для этого примера. Переместите его на рабочий стол или в другое место за пределами каталога приложения и выполните следующее:
/path/to/sync/gateway/bin/sync_gateway /path/to/project/sync-gateway-config.json
Вы можете проверить, что он работает, посетив http: // localhost: 4985 в вашем веб-браузере.
Запустив Couchbase Sync Gateway, перезапустите приложение Electron, и вы должны заметить, что оно реплицирует данные.
Вывод
Поздравляем! Вы только что создали кроссплатформенное настольное приложение, используя не более чем веб-технологии, такие как HTML, JavaScript и CSS. Что еще лучше, это настольное приложение будет синхронизироваться с Couchbase Server.
Если вы хотите больше узнать о том, как развернуть это приложение в виде отдельного двоичного файла, его можно найти в официальной документации GitHub Electron .