Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。
Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,性能好可是耗内存
断言——assert
const assert=require('assert')
function sum(a,b){
assert(arguments.length==2,'必须传2个参数')
assert(typeof a=='number','第一个参数必需是数字')
return a+b
}
console.log(sum(2,3))
//如果不满足断言里得条件就跳出程序
Buffer(缓冲器)
帮助node.js处理二进制文件
crypto(加密)
const crypto=require('crypto')
let obj=crypto.createHash('md5')
//obj.update('123456')
obj.update('123')
obj.update('456')
console.log(obj.digest('hex')) //e10adc3949ba59abbe56e057f20f883e
md5、sha
http
HTTP/HTTPS
HTTP/2
const http=require('http');
const fs=require('fs');
let server=http.createServer((req, res)=>{
fs.readFile(`www${req.url}`, (err, data)=>{
if(err){
res.write('404'); //?
}else{
res.write(data);
}
res.end();
});
});
server.listen(8080);
OS
提供系统操作
const os=require('os')
console.log(os.cpus())//cpu的信息
//如果不满足断言里得条件就跳出程序
path
路径
const path=require('path')
let str=`/var/local/www/aaa/1.png`
console.log(path.dirname(str))
// /var/local/www/aaa
console.log(path.basename(str))
// 1.png
console.log(path.extname(str))
// .png
// console.log(__dirname)// 存放当前文件文件夹的绝对路径 d:\trydemo\node
// console.log(process.execPath) //获取node.exe的绝对路径 C:\Program Files\nodejs\node.exe
//console.log(__filename,1111) // 当前文件(即fs.js)的绝对路径 d:\trydemo\node\fs.js
Event(事件队列)
Query Strings
const querystring=require('querystring');
let obj=querystring.parse('ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=aa&rsv_pq=f80d982000063ffb&rsv_t=6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr%2FF83%2F%2Bg4eiPURW2eQl9Iwc&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=10&rsv_sug4=10');
console.log(obj);
// { ie: 'utf-8',
// f: '8',
// rsv_bp: '0',
// rsv_idx: '1',
// tn: 'baidu',
// wd: 'aa',
// rsv_pq: 'f80d982000063ffb',
// rsv_t:
// '6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr/F83/+g4eiPURW2eQl9Iwc',
// rqlang: 'cn',
// rsv_enter: '1',
// rsv_sug2: '0',
// inputT: '10',
// rsv_sug4: '10' }
Url
const url=require('url');
let obj=url.parse('https://www.baidu.com:8080/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=aa&rsv_pq=f80d982000063ffb&rsv_t=6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr%2FF83%2F%2Bg4eiPURW2eQl9Iwc&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=10&rsv_sug4=10', true);
console.log(obj);
// {
// protocol: 'https:',
// slashes: true,
// auth: null,
// host: 'www.baidu.com:8080',
// port: '8080',
// hostname: 'www.baidu.com',
// hash: null,
// search:
// '?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=aa&rsv_pq=f80d982000063ffb&rsv_t=6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr%2FF83%2F%2Bg4eiPURW2eQl9Iwc&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=10&rsv_sug4=10',
// query:
// { ie: 'utf-8',
// f: '8',
// rsv_bp: '0',
// rsv_idx: '1',
// tn: 'baidu',
// wd: 'aa',
// rsv_pq: 'f80d982000063ffb',
// rsv_t:
// '6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr/F83/+g4eiPURW2eQl9Iwc',
// rqlang: 'cn',
// rsv_enter: '1',
// rsv_sug2: '0',
// inputT: '10',
// rsv_sug4: '10' },
// pathname: '/s',
// path:
// '/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=aa&rsv_pq=f80d982000063ffb&rsv_t=6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr%2FF83%2F%2Bg4eiPURW2eQl9Iwc&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=10&rsv_sug4=10',
// href:
// 'https://www.baidu.com:8080/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=aa&rsv_pq=f80d982000063ffb&rsv_t=6498LAZdRZjq9v4v0hs88kZItnCjDpT6UNBKr%2FF83%2F%2Bg4eiPURW2eQl9Iwc&rqlang=cn&rsv_enter=1&rsv_sug2=0&inputT=10&rsv_sug4=10' }
网络
TCP-稳定 Net
UDP-快 UDP/Datagram
DNS域名解析
const dns=require('dns')
dns.resolve('baidu.com',(err,res)=>{
if(err){
console.log('解析失败')
}else{
console.log(res)//[ '123.125.115.110', '220.181.57.216' ]
}
})
流操作——Stream
连续数据都是流——视频流、网络流、文件流、语音流
TLS/SSL
加密、安全
ZLIB——gz
压缩