NODE.js

not your mother's JS

dont be scared

Getting Going

We are going to use
and to make our lives quite a bit easier

Lets set up our packages

package.json


{
  "name" : "node_demo",
  "version" : "0.0.1",
  "dependencies" : {
    "express" : "latest",
    "jade" : "latest"
  }
}

Now Our Server!

 
		var express   = require('express');
		var webServer = express.createServer();

		webServer.get('/', function(req, res){
		  res.send('Hello Internet!');
		});
		webServer.listen('3000');
	

Easy right!

VIEWS!

JADE

we are going to use JADE
It's a templating langage great for node!

Setting it up


webServer.set('view engine', 'jade');
				
yup it is that easy

lets make some pages

  1. layout.jade
    
    !!!
    head
    body
      h1 An Awesome Site in Node!
      !=body
    			
  2. index.jade
    
    h3 INDEX!!!
    			

super super simple routes


webServer.get('/', function(req, res){
  res.render('index');
});
		

install the packages


$ npm install

boot it up!


		$ node server.js
	

lets make something!

models/Meme.js


var memes = [];

var create = function(vals, cb) {
  memes.push({
    name: vals.title,
    link: vals.link
  });
  cb(memes[memes.length -1])
}

var get = function(id) {
  if (id) {
    return memes[id];
  }
  return memes;
}

exports.get         = get;
exports.create      = create;

some new pages

 views/meme/index.jade 
h2 all memes
- for( var i =0; i < memes.length; ++i )
  h4= memes[i].name
  img(src="#{memes[i].link}");
br
a(href="/meme/new") add a new Meme
 views/meme/new.jade 
form(action="", METHOD="POST")
  label(for="title") Name of the Meme
  br
  input(name="title", type="text", placeholder="enter the title of the meme")
  br
  label(for="link") Link to the meme
  br
  input(name="link", type="text", placeholder="enter the link to the meme")
  br
  input(type="submit")
					 

routes .. utils .. local vars


var Meme      = require('./models/Meme.js'); //require our model

webServer.use(express.bodyParser()); // this will let us get the POST vars out of the request

webServer.get('/meme', function(req, res){
  res.render('meme', {'memes': Meme.get()});
});

webServer.get('/meme/new', function(req, res){
  res.render('meme/new');
});

webServer.post('/meme/new', function(req, res){
  Meme.create(req.body, function(){
    res.redirect('/meme');
  });
});
						 

Boot it up and enjoy!

just goto http://0.0.0.0:3000/meme/

THE END

By Sam Saccone at
Follow @samccone

Follow @MojoTech

get the code on GITHUB