A simple MVC framework for web applications built on node.JS. Follow the instructions to install node.JS. Join the mailing list for further help and feedback.
This framework is licensed under the terms of Apache License, Version 2.0.
- Integrated support for dependency injection.
- Filters for intercepting requests.
- Supports i18n out of the box.
- Handles updation and validation of models from forms.
- Supports flash messages.
- Allows adding view helpers to enable smarter views.
- Layout and "include" support for views.
- Automatic selection of view file based on request's extension.
- Support for HTTPS with automatic redirection.
- Session management with support for custom session storage.
- Simple API to create and consume cookies.
- Fast file uploads using node-formidable.
- Configurable form post and upload sizes.
- Makes sending files as response attachments using 'Content-Disposition' simple.
- Supports partial download of static files.
- Supports
if-modified-since
,if-none-match
andif-range
headers. - Plenty of documentation through examples (Wiki will be updated with more tutorials).
-
Install npm -
wget -qO- http://npmjs.org/install.sh | sudo sh
. -
Install grasshopper -
sudo npm install grasshopper
. -
Create a directory for your application.
-
Create a file named
hello.js
in your application's directory with the following content.var gh = require('grasshopper'); gh.get('/', function() { this.renderText('Hello World!'); }); gh.serve(8080);
-
From your applications directory invoke the command
node hello.js
. -
Point your browser at http://localhost:8080.
Arguments passed as part of the URL can be obtained with an additional parameter in the controller function, to which a hash of arguments defined between {}
in your route and their values would be passed.
- Text inside
<% and %>
are evaluated as Javacript code. - Text inside
<%= and %>
are evaluated as Javascript code and its result is included into the output.
-
Create a file named
greeting.html
in your application's directory with the following content. This would act as your template file.<html> <head> <title>Template Sample</title> </head> <body> <h1>Welcome, <%= name %>!</h1> </body> </html>
-
Create a file named
template.js
in your application's directory with the following content. The 'model' property of 'this' must be setup with the data items used in the template. Therender
function must be invoked with the name of a template file (without extension). The extension of the template file to use is determined by the extention of the request URL (.html
, if none specified).var gh = require('grasshopper'); gh.get('/greetings/{name}', function(args) { this.model['name'] = args.name; this.render('greeting'); }); gh.serve(8080);
-
From your applications directory invoke the command
node template.js
. -
Point your browser at http://localhost:8080/greetings/ABC.
Hashes containing the necessary dependencies can be added to the this
context of your controller functions, using the gh.addToContext()
function. You can either specify all the hashes to be included in a single invocation or in multiple invocations. For example,
var gh = require('grasshopper');
var dependencies = {
dataService: {
getStock: function() {
return 100;
}
}
};
gh.addToContext(dependencies);
gh.get('/', function() {
this.renderText('There are ' + this.dataService.getStock() + ' units in stock!');
});
gh.serve(8080);