初识node

Node 基础

浏览器工作原理(Node优势):事件驱动(事件轮询)和非阻塞IO处理(异步IO)
传统服务器是同步IO操作,采用线程方式处理多并发服务,线程会消耗额外的系统资源。

Node 构建简单的异步程序

var fs = require("fs");
fs.readFile("./resurce.json", function(err, data) {
  console.log(data);
});

这里的fs是node自带的模块,用于读取硬盘文件。node风格,优先处理错误,所以回调的第一个参数是err。

Node 构建 HTTP 服务器

var http = require('http');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(3000);
console.log("服务器运行在:http://localhost:3000");

数据流

可以把数据流看成是特殊的数组,只不过数组中的数据分散在空间上,而数据流中的数据是分散在时间上的。通过将数据一块一块的传送,开发人员可以每收到一块数据就开始处理,而不用等到数据都到了再做处理。(节省内存)

var steam = fs.createReadStream('./resource.json');
//当有新的数据准备好时候就会触发data事件
stream.on('data', function (chunk) {
    console.log(chunk)
});
//事件结束
stream.on('end', function () {
    console.log('finished');
})

管道

可以通过pipe()管道处理数据流动。

var http = require('http');
var fs = require('fs');
http.createServer(function (req, res) {
    res.writeHead(200, {'Content-Type': 'text/plain'});
    //指定一个从读取流到写出流的管道
    fs.createReadStream('./image/png').pipe(res);
}).listen(3000);
console.log("服务器运行在:http://localhost:3000");

模块

创建模块

如果模块是一个目录,Node通常会在这个目录下面找一个叫做index.js的文件作为模块的入口
exports = module.exports

导出模块

exports.fun=fun

使用模块

require(./fun.js)

异步

on():响应事件
once():响应一次事件
emit():发射事件

你可能感兴趣的:(初识node)