Pronto.js: How ConsumerSearch's Mobile API Server is Driven by Node.js
I was thrilled to read the story at Mobile Drupal about how ConsumerSearch is using Pronto.js to expose their huge Drupal content to their mobile application.
Pronto.js is designed to be a high performance asynchronous application framework that makes it simple to chain together components to build sophisticated application logic. It's the JS equivalent of the PHP Fortissimo framework. <!--break--> One characteristic that makes both Pronto.js and Fortissimo stand apart is that they provide an alternative to the MVC pattern. They use the Chain-of-Command pattern, which takes a route name and maps it to a series of "commands", each of which is responsible for a different part of the processing. Well-written commands become highly reusable, which makes application development rapid and yet still reliable.
When you build an application the components get chained together into routes with code like this (
register.route('search') .does(InitializeSearchService, 'initialization') .does(QueryRemoteSearchService, 'do-search') .uses('query').from('get:q') .does(SearchTheme, 'format-search-results') .uses('searchResults').from('cxt:do-search') ;
(Fortissimo code looks similar:
$register->route('search')->does(/*…*/)) The simple example above registers the route
search to a series of commands that each perform part of the overall task of running a search and formatting the response.
QueryRemoteSearchService and so on) are short pieces of object-oriented code (prototypes in JS, classes in PHP) that take predefined input, perform a simple task, and then return data. My typical command is around 20 lines of code.
I know this is just a brief teaser. We're working on several cool applications built on these technologies. With Pronto.js, we've been able to integrate with a wide variety of NPM packages, while Fortissimo and the Symfony (and other) PHP libraries can be easily combined. In the future, I'll blog some more about Fortissimo and Pronto.js.