一、事件
整个事件驱动的流程就是这么实现的,非常简洁。有点类似于观察者模式,事件相当于一个主题(Subject),而所有注册到这个事件上的处理函数相当于观察者(Observer)。
Node.js 有多个内置的事件,我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,如下实例:
// 引入 events 模块
var events = require('events');
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
以下程序绑定事件处理程序:
// 绑定事件及事件的处理程序
eventEmitter.on('eventName', eventHandler);
我们可以通过程序触发事件:
// 触发事件
eventEmitter.emit('eventName');
实例:
// 引入 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("程序执行完毕。");
打印结果:
连接成功。
数据接收成功。
程序执行完毕。
二、os
os 模块提供了一些基本的系统操作函数。我们可以通过以下方式引入该模块:
let os = require("os");
console.log(os)
//查看cpu信息
console.log(os.cpus())
//查看整个内存大小
console.log(os.totalmem())
//查看系统架构
console.log(os.arch())
//查看剩余内存量
console.log(os.freemem())
//查看系统平台
console.log(os.platform())
三、path
path 模块提供了一些用于处理文件路径的小工具,我们可以通过以下方式引入该模块:
let path = require("path")
let strPath = "http://www.newsimg.cn/xjp20171103/images/xjp_banner.jpg";
//获取路径信息的扩展名
let info =path.extname(strPath)
输出结果-- .jpg
let arr = ['/sxt','qianduan',"zhongji"]
let info1 = path.resolve(...arr)
输出结果-- E:\sxt\qianduan\zhongji
console.log(__dirname)
输出结果-- E:\html\重新来过web学习\node\02\03PATH
//获取当前执行目录的完整路径
let info2 = path.join(__dirname,'sxt','qianduan','zhongji')
输出结果-- E:\html\重新来过web学习\node\02\03PATH\sxt\qianduan\zhongji
var arr = [ 'xinwen', 'guonei.html' ];
let filePath = path.join(__dirname,...arr)
输出结果-- E:\html\重新来过web学习\node\02\03PATH\xinwen\guonei.html
let path = require('path')
//获取当前执行文件的目录
console.log(__dirname)
执行结果: E:\html\重新来过web学习\node\02\03PATH
//获取当前的执行文件
console.log(__filename)
执行结果: E:\html\重新来过web学习\node\02\03PATH\nodePath2.js
console.log(path.extname(__filename))
执行结果: .js
//解析路径,可以将路径信息直接解析出来,解析出根路径,目录,扩展名,文件名称,文件名,扩展名
console.log(path.parse(__filename))
执行结果: {
root: 'E:\\',
dir: 'E:\\html\\重新来过web学习\\node\\02\\03PATH',
base: 'nodePath2.js',
ext: '.js',
name: 'nodePath2'
}
四、url
url
模块提供用于网址处理和解析的实用工具。 可以使用以下方式访问它:
let url = require('url')
let httpUrl = "https://sale.vmall.com/hwmate.html#abc?cid=10602"
let urlObj = url.parse(httpUrl)
console.log(urlObj)
打印:
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'sale.vmall.com',
port: null,
hostname: 'sale.vmall.com',
hash: '#abc?cid=10602',
search: null,
query: null,
pathname: '/hwmate.html',
path: '/hwmate.html',
href: 'https://sale.vmall.com/hwmate.html#abc?cid=10602'
}
拼接
let targetUrl = "http://www.taobao.com/"
httpUrl = "./sxt/qianduan/laochen.html"
let newUrl = url.resolve(targetUrl,httpUrl)
console.log(newUrl);
打印:http://www.taobao.com/sxt/qianduan/laochen.html