Speaker : Claude Jiang
Node.js is a platform built on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.
这个是官网给出来的定义。 可能很多人对于这个定义出现的这个名词都不熟悉。我们这次培训主要的目的就是讲清楚这些东西。我会先从一些你们熟悉的东西慢慢把你们带入node的世界。//load third party module 'colors'. var colors = require('colors'); //print out 'Hello Node.js' with colorized. console.log("Hello Node.js".rainbow);
$.ajax({ url: 'http://www.claudejiang.com/echo', data: {param1: 'claude'}, success: function(data){ ... } });
var fs = require('fs'); fs.readFile('text.txt', {encoding: 'UTF-8'}, function(err, data){ if(err) throw err; console.log(data); }); console.log('end.');
var fs = require('fs'); var rs = fs.createReadStream(__filename); rs.on('data', function(data){ // console.log(data); console.log(data.toString()); }); rs.on('end', function(){ console.log('end'); }); // rs.pipe(process.stdout);
// load net module var net = require('net'); // create a tcp server var server = net.createServer(function (socket) { socket.on('data', function(data){ socket.pipe(socket); }); }); // bind to port 7000 on localhost server.listen(7000, "localhost"); console.log("TCP server listening on port 7000 at localhost.");演示例子。把客户端的信息原样返回。 在Node中开发tcp/udp应用是非常简单的。socket是一个双工流对象。只要了解流怎么应用,就可以很简单的开发一些网络应用。
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n'); }).listen(1337, '127.0.0.1'); console.log('Server running at http://127.0.0.1:1337/');在Node中开发web应用也是件简单的事。 Node并不是一个Web框架,它是一个平台,可以使用它提供的http模块很简单的开发出一个http server。 Http模块是建立在net模块之上的,只是在其上对keep-alive做了一些封装,其他request,response对象都只是简单的对输入流和输出流进行了封装。
var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); });
<script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script>
var fs = require('fs'); var path = require('path'); var files = fs.readdirSync('.'); // cpu wait files.forEach(function(file){ var stat = fs.statSync(file); // cpu wait if(stat.isFile()){ var str = fs.readFileSync(file, {encoding: 'utf8'}); // cpu wait console.log(file + ":" + str.length); } });
var fs = require('fs'); var path = require('path'); fs.readdir('.', function(err, files){ if(err) return console.log(err); files.forEach(function(file){ fs.stat(file, function(err, stat){ if(stat.isFile()){ fs.readFile(file, {encoding: 'utf8'}, function(err, str){ console.log(file + ":" + str.length); }); } }); }); });