2011.11.12
Sugamo.css
.
├── app.backend.js
├── app.frontend.js
└── lib
└── codegrid
├── index.js
├── config
│ ├── config.js
│ ├── config.local.js
│ ├── index.js
│ └── test.js
├── controller
│ ├── backend
│ │ ├── root.js
│ │ ├── entry.js
│ │ ├── user.js
│ │ └── etc...
│ ├── frontend
│ │ ├── root.js
│ │ ├── entry.js
│ │ ├── user.js
│ │ └── etc...
│ └── index.js
├── model
│ ├── index.js
│ ├── models
│ │ ├── entry.js
│ │ ├── user.js
│ │ └── etc...
│ └── validator.js
├── setting
│ ├── backend.js
│ ├── frontend.js
│ └── index.js
├── test.js
└── utils.js
ルーティングマップを書いてパースする
https://gist.github.com/1354601
var routesMap = {
'GET /' : 'root:index'
, 'GET /about' : 'about:index'
, 'GET /entry' : 'entry:index'
, 'POST /entry' : 'entry:create'
};
var http = require('http');
http.createServer(function(req, res) {
res.end('hoge');
}).listen(3000);
var connect = require('connect');
var app = connect.createServer();
app.use(function(req, res, next) {
if (req.url === '/') {
next();
}
else {
res.end('not found');
}
});
app.use(function(req, res, next) {
res.end('hoge');
});
app.listen(3000);
var express = require('express');
var app = express.createServer();
app.use(express.methodOverride());
app.use(express.bodyParser());
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res) {
...
});
var ret = asyncFunc();
ret.on('data', function() {
...
});
ret.on('hoge', function() {
...
});
ret.on('error', function() {
...
});
var fs = require('fs');
fs.readFile('./hoge.html', 'utf8', function(err, file) {
console.log(file);
});
var fs = require('fs');
var path = './hoge.txt';
fs.writeFile(path, "hello", function (err) {
if (err) return console.error(err);
fs.open(path, "a", 0644, function (err, file) {
if (err) return console.error(err);
fs.write(file, " world", null, "utf-8", function (err) {
if (err) return console.error(err);
fs.close(file, function (err) {
if (err) return console.error(err);
fs.readFile(path, "utf-8", function (err, data) {
if (err) return console.error(err);
console.log(data);
});
});
});
});
});
var fs = require('fs');
var Deferred = require('jsdeferred').Deferred;
var path = "./hoge.txt";
Deferred.next(function() {
var deferred = new Deferred();
fs.writeFile(path, "hello", function(err) {
if (err) return deferred.fail(err);
deferred.call();
});
return deferred;
})
.next(function() {
var deferred = new Deferred();
fs.open(path, "a", 0666, function(err, file) {
if (err) return deferred.fail(err);
deferred.call(file);
});
return deferred;
})
.next(function(file) {
var deferred = new Deferred();
fs.write(file, " world", null, "utf-8", function(err) {
if (err) return deferred.fail(err);
deferred.call(file);
});
return deferred;
})
.next(function(file) {
var deferred = new Deferred();
fs.close(file, function(err) {
if (err) return deferred.fail(err);
deferred.call();
});
return deferred;
})
.next(function() {
fs.readFile(path, "utf-8", function(err, data) {
if (err) return deferred.fail(err);
console.log(data);
});
})
.error(function(err) {
console.error(err);
});
var fs = require('fs');
var chain = require('chain-tiny');
var path = "./hoge.txt";
chain(function(next) {
fs.writeFile(path, "hello", next);
})
.chain(function(next) {
fs.open(path, "a", 0644, next);
})
.chain(function(file, next) {
fs.write(file, " world", null, "utf-8", function(err) {
next(err, file);
});
})
.chain(function(file, next) {
fs.close(file, next);
})
.chain(function(next) {
fs.readFile(path, "utf-8", next);
})
.end(function(err, data) {
if (err) console.error(err);
console.log(data);
});