NodeJS
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境
特点为:
1.拥有超强的高并发能力
2.依赖于Chrome V8引擎进行代码解释
3.异步事件驱动
4.非阻塞I/O
5.轻量、可伸缩,适于实时数据交互应用
6.单进程,单线程(这里指主线程)
初次使用nodeJS搭建http服务
获取访问网页的参数
//在node REPL交互式解释器中执行此文件
var http = require('http');
//引入url模块
var url = require('url');
//启用一个node服务
http.createServer(function (request, response) {
//发送http头部 状态值200 内容类型:text/html
response.writeHead(200, { 'Content-Type': 'text/html' });
//打印
//网页头部编码
response.write("<head><meta charset='UTF-8'></head>");
// 访问http://127.0.0.1:8888?name=zhang&age=18
//获取参数name=zhang&age=18
if (request.url != '/favicon.ico') {
var querys = url.parse(request.url, true).query;
console.log(querys.name, querys.age);//zhang 18
}
//结束
response.end(`name=${querys.name},age=${querys.age}`);
}).listen(8888);
//终端打印
console.log('启动服务:http://127.0.0.1:8888');
//nodejs热部署superviso
//1.安装:npm install -g supervisor
//2.使用supervisor代替nodejs启动应用:supervisor 文件名
node服务器的监听操作
//在Node.js中events是比较重要
//events模块提供一个对象events.EventEmitter,
//EventEmitter的核心是事件发布与事件监听
//node.js大部分模块都继承Event模块
//EventEmitter支持若干个事件监听器
//当事件发布时,注册到这个事件的事件监听器被依次调用时,事件参数作为回调函数参数传递
//emitter.on(event,listener) 事件注册监听
//emitter.emit(event,arg1...) 事件触发
//emitter.once(event,listener) 单次事件注册监听
//emitter.removeListener(event,listener) 移除监听
var EventEmitter = require('events').EventEmitter;
var ee = new EventEmitter();
//事件监听注册
var evefun = function (foo, bas) {
console.log(`监听事件:foo=${foo},bas=${bas}`);
}
ee.on('some_events', evefun)
//事件触发
ee.emit('some_events', 'was', '11')
//重复事件注册
console.log('事件触发二');
var evefun2 = function (foo, bas) {
console.log(`监听事件:foo=${foo},bas=${bas}`);
}
ee.once('some_events', evefun2)
//前面有重复相同事件则会执行两次
//若使用once注册 则只会执行一次
ee.emit('some_events', 'was', '22')
//移除某一个事件
ee.removeListener('some_events', evefun2)
ee.emit('some_events', 'was', '33')
//移除所有事件
ee.removeAllListeners('some_events', function () {
console.log('移除所有事件');
})
ee.emit('some_events', 'was', '44')//无事件执行