- PVSM.RU - https://www.pvsm.ru -
Promise.io [1] представляет собой модуль для удаленного вызова процедур(RPC), использующий «обещания» (promises). С его помощью можно создать вот такой сервер:
var server = new PromiseIO({
someFunc: function(input) {
return 'I got: ' + input;
}
});
server.listen(3000);
Клиент может вызвать someFunc после подключения к серверу:
var client = new PromiseIO();
client.connect('http://localhost:3000').then(function(remote) {
return remote.someFunc('my variable!');
}).then(function(returnVal) {
return console.log(returnVal);
}).catch(function(err) {
return console.log(err);
});
Для реализации «обещаний», под капотом, используется q [2].
Copromise [3] немного похож на co [4], но данная библиотека автоматически возвращает значения которые не являются «обещаниями», так что у вас всегда есть возможность получить что-либо используя yield.
Copromise представляет собой возможное значение сопрограммы [5]. Где сопрограмма это функция-генератор, использующая ключевое слово
yieldдля приостановления запуска и ожидания получения будущего значения. Данный подход позволяет получить линейное управление логикой исполнения(следования) для асинхронного кода.
Dean, объявил об этом на node.js list [6] приведя несколько примеров использования и сравнения с библиотекой co.
function run(coroutine) {
return new Promise(function(resolve, reject) {
(function next(value, exception) {
var result;
try {
result = exception ? coroutine.throw(value) : coroutine.next(value);
} catch (error) {
return reject(error);
}
if (result.done) return resolve(result.value);
Promise.resolve(result.value).then(next, function(error) {
next(error, true);
});
})();
});
}
Apper [7] представляет собой фреймворк реального-времени для одностаничных приложений. Идея заключается в том, что бы иметь железобетонные соглашения для практического использования одностраничных приложений, включающих прозрачную минификацию и комплектацию.
Вышеописанный фреймворк является над-Express оберткой, так что определение путей маршрутизации(routes) выглядит как в обычном проекте Express, хотя Apper имеет специфические секции для таких вещей как промежуточное ПО (middleware) или настройки приложения.
Например:
var app = require('apper')({
path: '.',
port: 8000,
host: '0.0.0.0',
// Not commonly used. Just use `apper.json` for the configuration
toOpenBrowser: false,
staticContentName: 'public',
moduleNames: {
environment: 'environment'
middleware: 'middleware',
routes: 'routes',
sockets: 'sockets'
},
mountPath: ''
});
app.start();
Где middleware.js будет:
module.exports = function (app) {
app.use(function (req, res, next) {
// middleware code
next();
});
};
Если вы незнакомы с Express, тогда вам может понравится работать с соглашениями которые использует Apper, такой подход, по крайней мере, убережет вас от тенденции [8] хранить все в виде одного большого(монолитного) файла app.js.
Автор: vba
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/javascript/69412
Ссылки в тексте:
[1] Promise.io: https://github.com/krillr/promise.io
[2] q: https://www.npmjs.org/package/q
[3] Copromise: https://github.com/deanlandolt/copromise
[4] co: https://www.npmjs.org/package/co
[5] сопрограммы: https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0
[6] node.js list: https://groups.google.com/d/topic/nodejs/u7xTQ5Tx-ts/discussion
[7] Apper: https://github.com/asyncanup/apper
[8] тенденции: #PointAboutApperGuide
[9] promise.io: https://www.npmjs.org/package/promise.io
[10] copromise: https://www.npmjs.org/package/copromise
[11] apper: https://www.npmjs.org/package/apper
[12] Источник: http://habrahabr.ru/post/236481/
Нажмите здесь для печати.