Skip to content

Commit

Permalink
Started route separation example
Browse files Browse the repository at this point in the history
  • Loading branch information
tj committed Nov 13, 2010
1 parent 6b436a0 commit 7ded5a2
Show file tree
Hide file tree
Showing 10 changed files with 135 additions and 1 deletion.
34 changes: 34 additions & 0 deletions examples/route-separation/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@

// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');

/**
* Module dependencies.
*/

var express = require('express')
, app = express.createServer()
, site = require('./site')
, user = require('./user');

// Config

app.set('view engine', 'ejs');
app.set('views', __dirname + '/views');
app.use(express.bodyDecoder());
app.use(express.staticProvider(__dirname + '/public'));

// General

app.get('/', site.index);

// User

app.all('/users', user.list);
app.all('/user/:id/:op?', user.load);
app.get('/user/:id', user.view);
app.get('/user/:id/view', user.view);
app.get('/user/:id/edit', user.edit);

app.listen(3000);
console.log('Express app started on port 3000');
18 changes: 18 additions & 0 deletions examples/route-separation/public/style.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
body {
padding: 50px;
font: 14px "Helvetica Neue", Arial, sans-serif;
}
a {
color: #00AEFF;
text-decoration: none;
}
a.edit {
color: #000;
opacity: .3;
}
a.edit::before {
content: '[ ';
}
a.edit::after {
content: ' ]';
}
8 changes: 8 additions & 0 deletions examples/route-separation/site.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

exports.index = function(req, res){
res.render('index', {
locals: {
title: 'Route Separation Example'
}
});
};
44 changes: 44 additions & 0 deletions examples/route-separation/user.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@

// Fake user database

var users = [
{ name: 'TJ', email: 'tj@vision-media.ca' }
, { name: 'Tobi', email: 'tobi@vision-media.ca' }
];

exports.list = function(req, res){
res.render('user/list', {
locals: {
title: 'Users'
, users: users
}
});
};

exports.load = function(req, res, next){
var id = req.params.id;
req.user = users[id];
if (req.user) {
next();
} else {
next(new Error('cannot find user ' + id));
}
};

exports.view = function(req, res){
res.render('user/view', {
locals: {
title: 'Viewing user ' + req.user.name
, user: req.user
}
});
};

exports.edit = function(req, res){
res.render('user/edit', {
locals: {
title: 'Editing user ' + req.user.name
, user: req.user
}
});
};
1 change: 1 addition & 0 deletions examples/route-separation/views/index.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
<p>Visit the <a href="/users">users</a> page</p>
9 changes: 9 additions & 0 deletions examples/route-separation/views/layout.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<html>
<head>
<title><%= title %></title>
<link href="/style.css" rel="stylesheet" />
</head>
<body>
<%- body %>
</body>
</html>
7 changes: 7 additions & 0 deletions examples/route-separation/views/user/edit.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<div id="user">
<h1>Editing <%= user.name %></h1>
<form method="post">
<p>Email: <input type="text" value="<%= user.email %>" name="user[name]"/></p>
<p><input type="submit" value="Save" /></p>
</form>
</div>
8 changes: 8 additions & 0 deletions examples/route-separation/views/user/list.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
<ul id="users">
<% users.forEach(function(user, id){ %>
<li>
<a href="/user/<%= id %>"><%= user.name %></a>
<a class="edit" href="/user/<%= id %>/edit">edit</a>
</li>
<% }) %>
</ul>
4 changes: 4 additions & 0 deletions examples/route-separation/views/user/view.ejs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<div id="user">
<h1><%= user.name %></h1>
<p>Email: <%= user.email %></p>
</div>
3 changes: 2 additions & 1 deletion examples/session/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,5 @@ app.get('/', function(req, res){
res.send(body + '<p>viewed <strong>' + req.session.views + '</strong> times.</p>');
});

app.listen(3000);
app.listen(3000);
console.log('Express app started on port 3000');

0 comments on commit 7ded5a2

Please sign in to comment.