1.安装

官网下载 不在赘述

2.HelloWorld

屏幕快照 2019-07-09 上午11.17.08.png

3.创建第一个应用

//引入http模块
var http = require('http');
http.createServer(function (request,reponse){
    //头信息
    //状态码以及内容类型
    reponse.writeHead(200,{'Content-Type':'text/plain'});
    //响应数据
    reponse.end('Hello World!');
}).listen(8888);
    //控制台打印信息
console.log('Server runnning at http://127.0.0.1:8888/');

屏幕快照 2019-07-09 上午11.40.38.png

4.回调函数

阻塞式

var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束");   

屏幕快照 2019-07-09 上午11.57.03.png

非阻塞式

var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
    if (err) return console.error(err);
    console.log(data.toString());
});
console.log("程序执行结束!");

屏幕快照 2019-07-09 下午12.17.34.png

笔记

readFile()用来异步读取文件,如果读取文件的时候发生错误,就会进入if打印错误信息

总结

通过上面两端程序可以看到阻塞式和非阻塞式的区别
第一个文件读取结束才执行后面的程序
第二个不等待文件读取直接执行后面的程序

5.事件循环

先看一段代码

// 引入events模块
var events = require('events');
// 创建eventEmitter对象
var eventEmitter = new events.EventEmitter();
// 创建事件处理程序 
var connectHandler = function connected(){
    console.log('连接成功');
    // 出发data_received事件
    eventEmitter.emit('data_received');
}
// 绑定connection事件处理程序
eventEmitter.on('connection',connectHandler);
// 匿名函数绑定data_received事件
eventEmitter.on('data_received',function(){
    console.log('数据接收成功');
});
// 触发connection事件
eventEmitter.emit('connection');
console.log("程序执行完毕");

屏幕快照 2019-07-09 下午2.02.47.png

EventEmitter 类

events 模块只提供了一个对象: events.EventEmitter。

可以通过require("events");来访问该模块。

下面看一个小例子

var EventEmitter = require('events').EventEmitter; 
var event = new EventEmitter(); 
event.on('some_event', function() { 
   console.log('some_event 事件触发'); 
}); 
setTimeout(function() { 
   event.emit('some_event'); 
}, 1000); 

屏幕快照 2019-07-09 下午2.22.41.png

笔记

小例子中首先首先创建了EventEmitter对象 绑定了名为some_event的事件,一秒之后执行。

列举出EventEmitter常用的函数(该截图引用自www.runoob.com)
屏幕快照 2019-07-09 下午2.27.03.png

6.Node.js模块

首先创建main.js文件

var hello = require('./hello');
hello();

require();引入当前目录下hello的文件,并且调用了world函数(默认扩展扩展名为js,所以可以不写成hello.js

结着创建main.js引入需要的hello.js文件

module.exports = world;
function world(){
    console.log("Hello World!");
}

使用module.exports将world函数作为接口对象,通过require();调用