
Features
- high performance, our main target is high performance, minimum of hidden unnecessary functionality
- strict routing, we like strict routing system, if method should use some certain parameters, it must get it
- simple use, if newbie can use our framework without any problem, this is real cool
- friendly use, we provide way for connect packages, modules from other developers
Soon will be able a new site with detailed documentation, in process.
Installation
$ npm install active
Create application
var active = require('active');
var app = active();
app.addRoute(options, callback);
app.addRoute(options, callback);
app.addRoute(options, callback);
app.startServer(parameters);
Server
To start new server you can use default settings:
app.startServer();
Or custom settings:
app.startServer({
'port': Number,
'host': String,
'cluster': Boolean,
});
All properties isn't required.
Routing
For adding new routing rule, you must use "addRoute" method of application object:
app.addRoute(options, callback);
Options
Settings for special rule.
{
'method': String,
'url': String,
'match': Object,
'query': Object
}
Examples of application routes:
app.addRoute({
'url': '/{category}',
'match': {
'category': ['phones', 'stuff']
}
}, callback);
app.addRoute({
'url': '/{category}/{item}',
'match': {
'category': ['phones', 'stuff'],
'item': '([a-z0-9-]{2,63}\.[a-z]{4})'
}
}, callback);
Callbacks
Helpful information about callbacks.
Request parameters
You can use path parameters, which been set in route ("url" directive):
app.addRoute(options, function(req, res) {});
Examples of application callbacks:
app.addRoute({
'url': '/{category}/{item}',
'match': {
'category': ['phones', 'stuff'],
'item': '([a-z0-9-]{2,63}\.[a-z]{4})'
}
}, function(req, res) {
console.log(req.params);
});
Response
You can choose how to return result to the client. Below you can see both examples.
Standart
Use standard capabilities of Node using "res" object:
app.addRoute(route, function(req, res) {
res.statusCode = 200;
res.end(content);
});
Custom
Use custom capabilities of framework:
app.addRoute(route, function(req, res) {
res.html(http_code, html);
});
app.addRoute(route, function(req, res) {
res.json(http_code, json);
});
Redirect
Framework provides custom way for redirecting queries:
app.addRoute(route, function(req, res) {
res.redirect('/path/', 301);
});
Layers
What you can do using layers:
- implement some specific middleware layer for your application
- connect different packages from other developers
Middleware layer is a function with three arguments: "req", "res" and "next", first and second are standard NodeJS objects, third is callback. There are two types of layers.
Local
Will be executed for request matched specific route rule:
app.addRoute(options, function(req, res, next) {
next();
}, callback);
Global
Will be executed for each request:
app.useLayer(function(req, res, next) {
next();
});
If you want to use few layers, you must send array with functions, instead of function:
app.addRoute(options, [Function, Function, Function], callback);
app.useLayer([Function, Function, Function]);
You can use any number of layers, but remember about your rom ;)
Contributing
"Active" framework is a new project, there is lot of work to do and you can help:
- review pull requests
- find new issue or fix exist
- add new feature or improve some old
- update documentation
License
The Active JS framework is open-source software licensed under the MIT