Skip to content

microscopejs/microscope-web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

75 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

microscope-web

ES6, Express/Connect fully compatible, POO & Modular Web framework.

microscopejs

NPM Build Status

Requirements

  • node
  • npm
  • gulp

Node.js installation

Install on OSX

Using homebrew:

brew install node

Install on Linux (Ubuntu/Mint)

sudo apt-get install python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

Install on Windows

Download Node.js MSI

Installation

install gulp (sudo on linux/OSX) :

npm install gulp -g

install dependencies (sudo on linux/OSX) :

npm install

Development commands

test (run gulp test):

npm test

test:

gulp test
  • validate source code (jsHint).

docs:

gulp docs
  • generate annoted code documentation (docco).
  • generate annoted code samples documentation (docco).

How to use ?

Check out project samples !!!

Application class

With ES5

var HttpApplication = require('microscope-web').HttpApplication;
var HomeController = require('./controllers/HomeController');
var AuthApplication = require('../auth/AuthApplication');
var logger = require('./middlewares/commonMiddleware');

var Application = HttpApplication.extend({
	
	// register application controllers in array
	controllers: [HomeController],
	
	// register application middlewares in array
	// templateEngine, logging, authentication, ...
	// call middleware with express instance in parameter.
	// configure using app.use([middleware]);
	middlewares: [logger],
	
	// use AuthApplication class as sub application 
	// map to /auth/{controller}/{action}
	areas: {
		'/auth': AuthApplication
	}
});

module.exports = Application;

With ES6

import {HttpApplication} from 'microscope-web';
import HomeController from './controllers/HomeController';
import AuthApplication from '../auth/AuthApplication';
import {logger} from './middlewares/commonMiddleware';

class Application extends HttpApplication {

	// register application controllers in array
	get controllers(){
		return [HomeController];
	}

	// register application middlewares in array
	// templateEngine, logging, authentication, ...
	// call middleware with express instance in parameter.
	// configure using app.use([middleware]);
	get middlewares(){
		return [logger];
	}

	// use AuthApplication class as sub application 
	// map to /auth/{controller}/{action}
	get areas(){
		return {'/auth': AuthApplication}
	}
}

var a = new Application();
a.run(() => console.log('application running'));

With experimental ES7

import {HttpApplication, decorators} from 'microscope-web';
import AuthApplication from '../auth/AuthApplication';
import HomeController from './controllers/HomeController';
import {logger} from './middlewares/commonMiddleware';

var {controllers, middlewares, areas} = decorators;

@controllers([HomeController])
@middlewares([logger])
@areas({'/auth': AuthApplication})
class Application extends HttpApplication {
	
}

var a = new Application();
a.run(() => console.log('application running'));

Controller class

With ES5:

var Controller = require('microscope-web').Controller;
var filters = require('../filters/commonFilters');

var HomeController = Controller.extend({
	
	filters: [filters.controllerFilter],
	
	routes: {
		'get /': [filters.actionFilter, 'index'],
		'get /home/about': 'about'
	},

	// index action
	// GET /
	index: function(request, response){
		response.send('index HomeController');
	},

	// about action
	// GET /home/about
	about: function(request, response){
		response.send('about HomeController');
	}
});

module.exports = HomeController;

With ES6:

import {Controller} from 'microscope-web';
import {controllerFilter, actionFilter} from '../filters/commonFilters';

class HomeController extends Controller {

	// add some controllers filter
	get filters(){
		return [controllerFilter];
	}

	// configure controller routing with callback array
	get routes(){
		return {
			'get /': [actionFilter, 'index'],
			'get /home/about': 'about'
		}
	}

	// index action
	// GET /
	index(request, response){
		response.send('index HomeController');
	}

	// about action
	// GET /home/about
	about(request, response){
		response.send('about HomeController');
	}
}

export default HomeController;

With experimental ES7

import {Controller, decorators} from 'microscope-web';
import {controllerFilter, actionFilter} from '../filters/commonFilters';
var {filters, routes} = decorators;

@filters([controllerFilter])
@routes({
	'get /': [actionFilter, 'index'],
	'get /home/about': 'about'
})
class HomeController extends Controller {

	// index action
	// GET /
	index(request, response){
		response.send('index HomeController');
	}

	// about action
	// GET /home/about
	about(request, response){
		response.send('about HomeController');
	}
}

export default HomeController;

Roadmap

  • TypeScript definition support

About

ES6, Express/Connect fully compatible, POO & Modular Web framework.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors