Новости из мира Node: promise.io, copromise, Apper

в 14:54, , рубрики: javascript, node.js

promise.io

Promise.io представляет собой модуль для удаленного вызова процедур(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.

copromise

Copromise немного похож на co, но данная библиотека автоматически возвращает значения которые не являются «обещаниями», так что у вас всегда есть возможность получить что-либо используя yield.

Copromise представляет собой возможное значение сопрограммы. Где сопрограмма это функция-генератор, использующая ключевое слово yield для приостановления запуска и ожидания получения будущего значения. Данный подход позволяет получить линейное управление логикой исполнения(следования) для асинхронного кода.

Dean, объявил об этом на node.js list приведя несколько примеров использования и сравнения с библиотекой 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

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

Вышеописанный фреймворк является над-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, такой подход, по крайней мере, убережет вас от тенденции хранить все в виде одного большого(монолитного) файла app.js.

Пометки

  • Promise.io: (GitHub: krillr/promise.io, Лизензия: Apache 2.0, npm: promise.io) от Aaron Krill.
  • Copromise: (GitHub: deanlandolt/copromise, Лицензия: MIT, npm: copromise) от Dean Landolt.
  • Apper: (GitHub: asyncanup/apper, Лицензия: MIT, npm: apper) от Anup Bishno.
  • На мой взгляд, тут не совсем выражена основная мысль о том что Apper это своего рода гид и над-фремворк в мир «структурированных++» Express-приложений.

Автор: vba

Источник

* - обязательные к заполнению поля