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

Когда наша кодовая база растет, мы обычно разбиваем код на модули, решаем использовать некоторые библиотеки из NPM и интегрируемся со сторонними сервисами. Для этой цели Parse Cloud позволяет нам использовать синтаксис CommonJS, но мы должны вручную добавить все сторонние библиотеки в облачную папку вместе с нашим собственным кодом и использовать соглашение, отличное от node.js, для идентификаторов модулей.

Например, если мы хотим использовать служебную библиотеку lodash, нам нужно поместить прилагаемую библиотеку в облачную папку и потребовать ее:

var _ = require('cloud/lodash');

У этого есть серьезные недостатки:

  • мы не можем использовать NPM для управления зависимостями, и мы должны включить сторонние библиотеки в репозиторий проекта,
  • если сторонней библиотеке требуются другие модули, это может быть немного сложно,
  • добавление к каждому идентификатору модуля префикса cloud делает модульное тестирование громоздким и плохо сочетается с поддержкой кода в IDE,

Решение очевидно - мы должны объединить наши модули и все их зависимости перед загрузкой их в Parse.

Настраивать

Пример настройки с помощью Browserify позволяет использовать обычные пути node.js, что значительно упрощает разработку. А с преобразованиями Browserify мы даже можем использовать синтаксис es2015 (babelify) или некоторые шаблоны Handlebars (hbsfy).

Запуск проекта Parse Cloud с использованием их интерфейса командной строки хорошо описан в документации Parse Cloud, поэтому я пропущу эту часть.

После создания нового проекта Parse мы должны создать файл package.json и переименовать облачную папку во что-то другое, например src. Наша структура каталогов должна выглядеть так:

├── .gitignore
├── config
│ └── global.json
├── package.json
├── public
│ └── index.html
└── src
│ └── main.js

Теперь нам нужно установить Browserify:

$ npm install browserify --save-dev

и добавьте папки node_modules и cloud в файл .gitignore.

Мы также можем добавить несколько сценариев NPM для автоматизации процесса сборки и развертывания. Мы делаем это в разделе скриптов файла package.json:

"scripts": {
  "postinstall": "npm run setup",
  "setup": "npm run clean && mkdir cloud",
  "clean": "rm -rf cloud",
  "build": "browserify src/main.j --exclude buffer -o cloud/main.js",
  "deploy": "npm run build && parse deploy"
},

Вы обратили внимание на параметр - буфер исключения? Parse предоставляет свою собственную реализацию Buffer, который является подмножеством буфера node.js и предназначен для работы в среде Parse, поэтому мы должны сказать Browserify, чтобы он не включал буферную прокладку.

После добавления этих скриптов мы можем запускать их следующим образом:

$ npm run setup
$ npm run deploy

Первая команда создаст новый облачный каталог в нашем проекте, а вторая объединит наш код и загрузит его в Parse.

Анализировать облачные модули

Parse предоставляет несколько библиотек, настроенных для работы в среде Parse Cloud. Существуют модули для общих API, поэтому мы можем легко использовать Mailgun или Twilio. Но если нам нужно интегрироваться с поставщиком услуг, которого нет в списке, нам придется реализовать это самостоятельно, используя функцию Parse Parse.Cloud.httpRequest для вызова API этого поставщика, потому что модуль из npm может просто не работают (Parse Cloud - это не настоящая среда node.js).

ES6 в облаке синтаксического анализа

Parse JavacScript SDK начиная с версии 1.6 более дружелюбен к ES6. В 1.6 есть несколько больших изменений, но на сегодняшний день Parse Cloud не поддерживает ES6. Так что, если мы хотим использовать синтаксис модуля ES6, нам все равно нужно транспилировать наш код с помощью Babel перед развертыванием, и самый простой способ - использовать преобразование babelify.

Browserify поддерживает гибкую систему преобразования исходных файлов. Их можно настроить несколькими способами, но я остановлюсь на самом простом - параметре командной строки.

Для этого установите модуль babelify:

$ npm install --save-dev babelify

А затем измените сценарий сборки:

"build": "browserify src/main.js --exclude buffer --t babelify --o cloud/main.js"

Вывод

С помощью этой настройки мы можем легко разделить наш код на модули, потребовать внешние библиотеки, использовать NPM для управления зависимостями, функции, связанные с кодом IDE, работают должным образом, и мы можем использовать преобразования для Browserify. Теперь мы также можем легко использовать линт, модульное тестирование наших модулей и развертывать их в Parse или автоматизировать эти задачи с помощью сервера CI.

Использование такой настройки значительно увеличивает продуктивность проектов, использующих Parse Cloud, и, на мой взгляд, решает некоторые основные проблемы, связанные с модулями в Parse. Более того, Browserify можно легко заменить любым другим инструментом для связывания, например Webpack.

Я отправил пример проекта на GitHub . Попробуйте и дайте мне знать, что вы думаете.