moduleLoader
v0.1.0
Published
Provides a way to load multiple modules into webservice at once
Downloads
8
Readme
#moduleLoader ##Overview: moduleLoader is a basic extension for webservice.js that provides an eased way to support multiple modules surfacing multiple methods as Web Services.
##Syntax: The basic syntax is as follows:
require('moduleLoader')({
modulesPath: '/api',
title: "The long name of your product",
name: "A short name",
version: "0.1.0",
endpoint: "http://localhost:8080"
});
##Basic usage with webservice.js:
var webservice = require('webservice'),
api = require('./api'),
colors = require('colors');
webservice.createServer(api).listen(8080);
console.log(' > stand-alone json webservice started on port 8080'.cyan);
##Advanced Usage: At times it may be necessary for one module to call methods from another module. In this scenario the easiest way is to create a global api.js (or whatever name you want) that requires moduleLoader and returns it. An example of the api.js could be:
module.exports = require('moduleLoader')({
modulesPath: '/api',
title: "My REST Library",
name: "RLIB",
version: "0.1.0",
endpoint: "http://localhost:8080"
});
Then inside each module you would include the new api.js file within the calling method when you need to call a method from another module:
exports.echoProxy = function(options, callback){
// Calls the echo method already defined in the API
require('../api').echo(options, callback);
};
exports.echoProxy.schema = {
msg: {
type: 'string',
optional: false,
message: "msg variable is required"
}
};
exports.echoProxy.description = 'This is a proxy wrapper around the API echo method.';
##How is works: At the basic level moduleLoader scans the supplied folder for .js files and then requires them creating a temporary variable to hold the module.export that is returned. This temporary variable is then walked and used to expand on a local object. Finally, once all of the files have been loaded, this new object is returned.
##Future plans: Hopefully support for dynamic reloads will be added. This should also add in the functionality to load new modules when they are put into the watched directory.