40

Using Node.js for everything or what it is to write a book about it

Embed Size (px)

Citation preview

// lib/awesome.jsmodule.exports = function() { // ... our logic here}

// app.jsvar awesome = require('./lib/awesome');

// package.json{ "name": "project-name", "version": "0.1.7", "description": "...", "dependencies": { "other-module": "1.1.0" }}

// terminalnpm publish

// terminalnpm install project-name

var http = require('http');var server = http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});server.listen(5060, '127.0.0.1');

var fs = require('fs'), http = require('http');

var html = fs.readFileSync('path/to/my/file.html');var css = ...

var server = http.createServer(function (req, res) { var extension = ... switch(extension) { case "css": contentType = "text/css"; break; case "html": contentType = "text/html"; break; case "js": contentType = "application/javascript"; break; case "ico": contentType = "image/ico"; break; default: contentType = "text/plain"; } res.writeHead(200, {'Content-Type': contentType}); res.end(content + '\n');});server.listen(5060, '127.0.0.1');

var http = require('http');http.createServer(function (req, res) { if(req.url === '/api') { res.writeHead(200, {'Content-Type': 'application/json'}); switch(req.method) { case 'GET': res.end('{"get": "OK"}'); break; case 'POST': res.end('{"post": "OK"}'); break; case 'PUT': res.end('{"put": "OK"}'); break; case 'DELETE': res.end('{"delete": "OK"}'); break; } } else { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('<html><body>...\n'); }}).listen(5060, '127.0.0.1');console.log('Server running at http://127.0.0.1:5060/');

// gulpfile.jsvar gulp = require('gulp');var concat = require('gulp-concat');

gulp.task('scripts', function() { gulp.src('./lib/*.js') .pipe(concat('all.js')) .pipe(gulp.dest('./dist/'))});

// terminalgulp scripts

// Gruntfile.jsmodule.exports = function(grunt) { grunt.initConfig({ concat: { javascript: { options: { }, src: ['./lib/*.js'], dest: 'build/scripts.js' } } }); grunt.loadNpmTasks('grunt-contrib-concat'); grunt.registerTask('default', ['concat']);}

// terminalgrunt

describe("Testing TODOMVC", function () {

before(function() { app.todos.reset(); });

it("Adding new TODOs", function () { // ... do something expect($('#todo-list li').length).to.be.equal(2); });

});

// servervar io = require('socket.io')(http);io.on('connection', function(socket){ socket.on('message-type', function(msg){ socket.emit('message-received', 'OK'); });});

// browser// <script src="/socket.io/socket.io.js"></script>var socket = io();socket.emit('message-type', 'Hello world!');