Frameworks Galore

NodeJS

Express.js

  • Since 09/2012
  • Convention-over-Configuration
  • Command-line Scaffold Generator
  • Waterline ORM
  • Integrates Web Sockets
  • Bundles Static Files with Grunt 

 

  • Since 08/2011
  • Configuration-Centric
  • Designed for APIs
  • Validation using JOI Module
  • Built-in Authentication

 

  • Since 09/2013
  • SEO Compliance
  • Powered by Hapi.js
  • Require.js, Backbone, jQuery, Handlebars
  • HTML5's pushState 

 

Code Examples

WATERLINE ORM

var Model = {
  attributes: {
  	title: {
  	  type: 'string',
  	  required: true
  	}
        count: {
          type: 'integer',
          defaultTo: 1
        }
  }
}

mysql • mongo • redis • postgres • ldap • neo4js

Controller

exports.index = function(req, res){
  res.render('index', { title: 'Home' })
}

exports.list = function(req, res, next){
  if (error) return next(error)
  res.redirect('/tasks')
}

Express.js

Controller

module.exports = {
  hi: function (req, res) {
    return res.send("Hi there!");
  },
  bye: function (req, res) {
    return res.redirect("http://www.url.com");
  }
}
exports.index = function(req, res){
  res.render('index', { title: 'Home' })
}

exports.list = function(req, res, next){
  if (error) return next(error)
  res.redirect('/tasks')
}

Express.js

Server

Express.js

var http = require('http')
http.createServer(app).listen(app.get('port'), 
  function(){
    console.log('Listening on port ' + app.get('port'))
  }
)
app.get('/', routes.index)

Server

var server = new Hapi.Server()
server.start(function () {
    console.log('Server started at: ' + server.info.uri)
})
server.route({
    path: '/', 
    method: 'GET',
    handler: showIndex
})

Express.js

var http = require('http')
http.createServer(app).listen(app.get('port'), 
  function(){
    console.log('Listening on port ' + app.get('port'))
  }
)
app.get('/', routes.index)

Server

define(['lazoServer'], function (LazoServer) {
    return LazoServer.extend({
        setup: function (hapi, pack, servers, options) {
            pack.register({
                plugin: require('good'),
                options: {
                    ...
                }
            }, function (err) {
                if (err) {
                    LAZO.logger.error('[server.setup]', 'Error: ' + err)
                } else {
                    LAZO.logger.info('[server.setup]', 'Monitoring:')
                    options.success()
                }
            })
        }
    })
})

Anatomy

/assets
 
/public

/config

/view

/api
/app.js

/public

/routes

/views

Express.js

Anatomy

/assets
 
/public

/config

/view

/api
/app

/component

/models
/app.js

/public

/routes

/views

Express.js

/public
--> img
--> css
--> js

/server
--> config
--> controllers
--> models
--> views

Full-Stack
 

SEO by URI Routes

 

 

 

 

 

 

Easier + Configurable HTTP Server I/O • Scaffolding

 

HTTP Server I/O

MVC • DB Adapters
Integrated Sockets • ORM
 

API Optimized
Built-in Auth • Config+
 

Express.js

NodeJS Frameworks

By Tom

NodeJS Frameworks

  • 585