function MyMainFunction() {
}
function lessImportantFunction() {
}
// Replace the exports with main function
module.exports = myMainFunction;
// Additional functions can be tucked on main
module.exports.lessImportantFunction = lessImportantFunction;
// Functions for tests can be tucked on under test
module.exports.test = {
privateFunctionToTest: privateFunction
}
function require(name) {
var source = findSource(name);
var module = { exports: {}};
(function(module, exports){
eval(source);
})(module, module.exports);
return module;
}
// The benefit of streams readableStream.pipe(writableStream)
var events = require('events');
var util = require('util');
Tapir = function() {
this.eat = function(food) {
if (isMeat(food))
this.emit('error', new Error("I'm a vegetarian"));
else
this.emit('eating', food);
}
};
// Set EventEmitter as Tapir's prototype
util.inherits(Tapir, events.EventEmitter);
var fs = require('fs')
var file = fs.createReadStream('./file.txt')
file.on('error, function(err) {
console.log('Error ' + err)
throw err;
})
file.on('data, function(err) {
console.log('Data ' + data)
})
file.on('end, function(err) {
console.log('End ' + data)
})
var writestream = new stream.Stream()
writestream.writable = true
writestream.write = function (data) {
return true // true means 'yes i am ready for more data now'
// OR return false and emit('drain') when ready later
}
writestream.end = function (data) {
// no more writes after end
// emit "close" (optional)
}
writestream.write({number: 1})
// note: in node core data is always a buffer or string
var readstream = new stream.Stream()
readstream.readable = true
readstream.on('data', function(data) {
var ready = writestream.write(data)
if (ready === false) {
this.pause()
writestream.once('drain', this.resume.bind(this))
}
})
readstream.on('end', function() {
writestream.end()
})
var r = request.defaults({'proxy':'http://localproxy.com'})
http.createServer(function (req, resp) {
if (req.url === '/doodle.png') {
r.get('http://google.com/doodle.png').pipe(resp)
}
})
http://goo.gl/sS8Kv
http://goo.gl/qQVsP