2015-01-24 2 views
6

Я использую Parse Cloud Code для социального мобильного приложения. Я хочу сделать облачный код масштабируемым, но у Parse есть некоторые правила, которым я должен подчиняться. Структура, как:Структура кода секса парсеров

cloud/ 
    main.js 
    other.js 
    otherfile/ 
     someother.js 
     ... 
    ... 

только main.js необходимость и мобильные клиенты могут вызывать только функции внутри main.js.

В моих клиентах я использую MVC как архитектуру, но я не уверен, какую архитектуру я должен использовать в своем облачном коде. Как должна обладать моя архитектура облачного кода.

Есть ли общая архитектура бэкэнд, которую я могу использовать?

ответ

7

Я сам создал структуру. Но это, безусловно, может быть улучшено.

Я попытался сделать мой main.js простым. Я добавил только имена функций, которые будут вызываться за пределами облачного кода.

// Include all of the modules 
var module1 = require('cloud/folder1/file1.js'); 
var module2 = require('cloud/folder1/file2.js'); 
var module3 = require('cloud/folder2/file1.js'); 
var backgroundjob = require('cloud/backgroundjob/background.js'); 

Parse.Cloud.job("startBackgroundJob", backgroundjob.startBackgroundJob); 
Parse.Cloud.define("do_this_stuff", module1.thisfunction); 
Parse.Cloud.define("do_this_stuff2", module1.notthisfunction); 
Parse.Cloud.define("do_that_stuff", module2.thatfunction); 
Parse.Cloud.define("do_dat_stuff", module3.datfunction); 

В file1.js Я написал следующие функции.

// Include libraries 
var utils = require("cloud/utils/utils.js"); 
var _ = require('underscore'); 

// Export Modules 
module.exports = { 
    thisfunction: function (request, response) { 
    addComment(request, response); 
    }, 
    thatfunction: function (request, response) { 
    getComment(request, response); 
    }, 
}; 

function addComment(request, response) { 
    // write your code here 
    var stuff = utils.callThisFunction(param); // This is the usage of another function in another file 
    response.success("Comment added"); // or error but do not forget this 
} 

function getComment(request, response) { 
    // write your code here 
    response.success("Got Comment"); // or error but do not forget this 
} 

Я экспортировал модули, как показано, потому что он делает код более удобочитаемым. Я могу просто взглянуть на верхнюю часть кода и посмотреть, какие функции я могу использовать из этого файла. Вы можете использовать docs export style.

exports.addComment = function(request, response) { 
    // your code 
    response.success(); 
} 
+1

Это было очень полезно! Я сделал еще один шаг и сделал следующее: '' ' var CloudFunctions = require ('./ source/cloud-functions.js'); _.each (_. Keys (CloudFunctions), function (functionName) { Parse.Cloud.define (functionName, CloudFunctions [functionName]); }); '' ' Таким образом, вам не нужно определять каждый из них. Работает для работы, сохраняет/удаляет и т. Д. –

0

Внутри облачного кода main.js живет как есть. Все функции облачного кода живут внутри этого единственного файла. Нет модуляции или дополнительной архитектуры.

Parse.Cloud.run (имя, данные, параметры) - это единственный способ вызова функций Parse Cloud.

R

0

Вы можете разбить код на модули, создавая новый модуль наряду с main.js, скажем services.js

И требуют в main.js

require("cloud/services.js"); 

Наконец, все функции облака, определенные в этом файле будет быть доступным для вас, как в main.js. Это связано с тем, что Parse запускает все в этом файле, когда вы его используете require, что по сути означает, что вы просто учли весь этот код в отдельный файл.

+0

Я планировал сделать аналогичный комментарий. У меня есть облачные функции, определенные в нескольких разных модулях, и приложения Android и iOS находят их. Я понял на линии Main.js 5000 или так, что модули были способом! – MayNotBe

Смежные вопросы