美文网首页
nodejs学习-基础模块

nodejs学习-基础模块

作者: TinkleJane | 来源:发表于2020-06-14 21:08 被阅读0次

assert 模块提供了一组断言函数,用于验证不变量。

一般服务器校验不使用断言,断言一旦不成立就退出程序了,而服务器要一直运行
assert(value[, message])

const assert=require('assert');
function sum(a, b){
  assert(arguments.length==2, '必须传2个参数');
  assert(typeof a=='number', '第一个参数必须是数字');
  assert(typeof b=='number', '第二个参数必须是数字');
  return a+b;
}
console.log(sum(12, 5));
  • Console 类,包含 console.log()console.error()console.warn() 等方法,可用于写入任何 Node.js 流。
  • 全局的 console 实例,配置为写入 process.stdoutprocess.stderr。 使用时无需调用 require('console')

crypto 模块提供了加密功能,包括对 OpenSSL 的哈希、HMAC、加密、解密、签名、以及验证功能的一整套封装。

Md5加密是单项散列加密,理论上不能破解,简单的加密可以暴力破解,Md5双层加密,暴力破解基本也不可能

const crypto=require('crypto');
let obj=crypto.createHash('md5');
//obj.update('123456');
obj.update('123');
obj.update('4');
obj.update('56');
console.log(obj.digest('hex'));
//e10adc3949ba59abbe56e057f20f883e

const crypto=require('crypto');
function md5(str){
  let obj=crypto.createHash('md5');
  obj.update(str);
  return obj.digest('hex');
}
console.log(md5(md5('123456')+'se32ssdfsd43'));

dns 模块用于启用名称解析。 例如,使用它来查找主机名的 IP 地址。

const dns=require('dns');
dns.resolve('baidu.com', (err, res)=>{
  if(err){
    console.log('解析失败');
  }else{
    console.log(res);
  }
});
//[ '39.156.69.79', '220.181.38.148' ]
dns.lookup('baidu.com', (err, address, family) => {
  console.log('地址: %j 地址族: IPv%s', address, family);
  });
//地址: "39.156.69.79" 地址族: IPv4
//事件方式------------
const Event=require('events').EventEmitter;
let ev=new Event();
//1.监听(接收)
ev.on('msg', function (a, b, c){
  console.log('收到了msg事件:', a, b, c);
});
//2.派发(发送)
ev.emit('msg', 12, 5, 88);
//收到了msg事件: 12 5 88

//函数方式-----------
function msg(a, b, c){
  console.log('收到了msg事件:', a, b, c);
}
msg(12, 5, 88);
const fs=require('fs');
// 读文件
fs.readFile('1.txt', (err, data)=>{
  if(err){
    console.log('有错');
  }else{
    console.log(data.toString());
  }
});
// 写文件
fs.writeFile('3.txt', 'erqwreqwere', err=>{
  if(err){
    console.log(err);
  }else{
    console.log('成功');
  }
});

fs.readFile('ofo.png', (err, data)=>{
  fs.writeFile('ofo2.png', data, ()=>{});
});
const http=require('http');
const fs=require('fs');
let server=http.createServer((req, res)=>{
  fs.readFile(`www${req.url}`, (err, data)=>{
    if(err){
      res.writeHeader(404);           //header
      res.write('Not Found');         //body
    }else{
      res.write(data);
    }
    res.end();
  });
});
server.listen(8080);

http2 核心 API 在客户端和服务器之间比 http API 更加对称。 例如,大多数事件,比如 'error'、 'connect' 和 'stream',都可以由客户端代码或服务器端代码触发。

const fs=require('fs');

let rs=fs.createReadStream('1.png');
let ws=fs.createWriteStream('2.png');

rs.pipe(ws);

rs.on('error', err=>{
  console.log('读取失败');
});

ws.on('finish', ()=>{
  console.log('写入完成');
});
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);

输出:
Url {
  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:
   [Object: null prototype] {
     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' }
const zlib=require('zlib');
const fs=require('fs');

let rs=fs.createReadStream('jquery.js');
let ws=fs.createWriteStream('jquery.js.gz');

let gz=zlib.createGzip();

rs.pipe(gz).pipe(ws);

ws.on('finish', ()=>{
  console.log('完成');
});

server-stream-gz

const http=require('http');
const fs=require('fs');
const zlib=require('zlib');

let server=http.createServer((req, res)=>{
  let rs=fs.createReadStream(`www${req.url}`);

  //rs.pipe(res);

  res.setHeader('content-encoding', 'gzip');

  let gz=zlib.createGzip();
  rs.pipe(gz).pipe(res);

  rs.on('error', err=>{
    res.writeHeader(404);
    res.write('Not Found');

    res.end();
  });
});
server.listen(8080);

相关文章

网友评论

      本文标题:nodejs学习-基础模块

      本文链接:https://www.haomeiwen.com/subject/jfkxxktx.html