node package manager
Don’t reinvent the wheel. Reuse code within your team. Create a free org »

simple-node

Simple Components on Node.js

Simple Components helps build their bundled applications simply. Unpretentious way we want to help you save time and less development efforts.

  • Components of library living on Simple folder.
  • Frontend is the folder where the living files of controller.(you can change location setting dispatch.path)
  • Routes is the folder where you save object routes.

How works

// In this case its a HTTP server
http.createServer(function(request, response) {

	var requestParsed = require('url').parse( request.url, true );
	var router = require('Simple/Router/Base');
	router.routes = require( 'Routes/routes' );//inject routes on router..see Routes/routes.js

	//main concept are resource that represent module/method/outputFormat on node.js
	var resource = router.getResourceByUri(requestParsed.pathname);

	//this dispatch resource on system
	var dispatch = require('Simple/Controller/Dispatch');
	dispatch.resource(resource, requestParsed, response);

}).listen(port);

Routes

Routes are nested objects that represents paths e resources

Basic routes are (Routes/routes.js):

module.exports = [

	//STATIC MATCH notfound page and errorPage
	{
		path:/^.*\/notFound$/,
		resource:{
			controller:'index',
			action:'notfound'
		}
	},
	{
		path:/^.*\/errorFound$/,
		resource:{
			controller:'index',
			action:'errorfound'
		}
	},

	//index common pattern ---- match first!
	{
		path:/^\/$/,
		resource:{
			controller:'index',
			action:'index'
		}
	},
	//controller/action/params[0]/params[1]/params[2]...
	{
		path:/^\/([^\/]+)\/([^\/]+)\/?(.*)$/,
		resource:{
			controller:1,
			action:2,
			params:3
			//,_continue:true //if you have personal pattern you need passed common patterns until find default pattern
		}
	},
	{
		path:/^\/([^\/]+)\/?$/,
		resource:{
			controller:1,
			action:'index'
			//,_continue:true //if you have personal pattern you need passed common patterns until find default pattern
		}
	},
	//--------------------------------------------------

	//(NOTE: _continue:true are disabled on above common patter, the loop match cannot pass this item, because already finded pattern on common pattern. uncomment _continue:true if you like create alias or personal patterns)
	//--------------------------------------------------
	//after match default pattern, rename to personal pattern
	{
		path:/^\/home.*/,
		resource:{
			controller:'index'
		}
	}

];

Run example

This code is really useful.

Frontend folder contain you own routes and server, you can add your View and Helper-Model layer

### Install

git clone git@github.com:stvkoch/Simple-node.git yourSimpleApp
cd yourSimpleApp
#run single server
node Frontend/Server/server.js 3000

#run cluster mode
node Frontend/Server/server.js 3000 true



open browser
http://localhost:3000/home/index/a/b
http://localhost:3000/home/show
http://localhost:3000/index/index

Truly functional, but work in progress. New components are added constantly

Any question, please send message to: