1.安装
官网下载 不在赘述
2.HelloWorld
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/');
4.回调函数
阻塞式
var fs = require("fs");
var data = fs.readFileSync('input.txt');
console.log(data.toString());
console.log("程序执行结束");
非阻塞式
var fs = require("fs");
fs.readFile('input.txt', function (err, data) {
if (err) return console.error(err);
console.log(data.toString());
});
console.log("程序执行结束!");
笔记
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("程序执行完毕");
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);
笔记
小例子中首先首先创建了EventEmitter对象 绑定了名为some_event的事件,一秒之后执行。
列举出EventEmitter常用的函数(该截图引用自www.runoob.com)
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();调用
最后一次更新于2020-03-05
0 条评论