Статьи

Создайте настольное приложение с GitHub Electron и Couchbase

Итак, я использую  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 .