node 快速入门

node中有很多的内置库,这些内置库提供了大量的属性和方法,我在学习node的时候针对每一个模块都写了一个快速入门的例子,让你在最短的时间内掌握该模块,当然,关于每一个模块的更多的用法还需要参考官网。

assert用法

const assert = require('assert');
try {
  var a = 10
  var b = 20
  assert.equal(a, b, '不相等')  // notEqual strictEqual deepEqual notDeepEqual
} catch (error) {
  console.log(error.message)
}

Buffer

// 使用js处理二进制
// 返回一个指定大小的被填满的 Buffer 实例。 较慢,但可确实例绝不包含旧的和潜在的敏感数据。
var b1 = Buffer.alloc(10, 8)
// 返回一个新建的指定 size 的 Buffer,但它的内容必须被初始化
var b2 = Buffer.allocUnsafe(10, 8)
// 返回一个新建的包含所提供的字符串的副本的 Buffer。
var b3 = Buffer.from('hello world')

var b = Buffer.from('hello world')
Buffer.byteLength(b) // 11
Buffer.isBuffer(b) // true
b.length // 11
b.toString() // hello world
b.toString('hex') // 68656c6c6f20776f726c64
b.toString('base64') // aGVsbG8gd29ybGQ=

process

process.argv  // [execArgv, execPath]
process.versions // node以及其依赖包版本信息
process.pid // 进程id
process.cwd() // 当前目录
process.memoryUsage() // 内存使用
process.stdout.write('iwen') // 内存使用
process.kill(pid) // 杀死某个进程
process.on('exit', () => {}) // 监听退出事件
process.nextTick(bar) // 类似于setTimeout(bar, 0)

child_process 主进程之外新建一个子进程来提高程序的运行效率

// main.js
var childProcess = require('child_process');
var child = childProcess.fork('./child.js');
child.on('message', function (msg) {
  console.log("Main on message: ", msg);
});
child.send({
  message: "I love you !"
});

// child.js
process.on('message', function (m) {
  console.log('Child listen:', m);
});
process.send({
  message: 'You love me'
});

cluster 父进程管理一坨子进程的方式来实现集群的功能

const cluster = require('cluster');
var http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker, code, signal) => {
    console.log('worker' + worker.process.pid + 'died')
  })
} else {
    http.createServer(function (req, res) {
      res.writeHead(200);
      res.end('Hello world');
    }).listen(1234);
}

crypto 数据的机密解密

const crypto = require('crypto');
const key = 'lingxi' // createHash 不需要key
const hash = crypto.createHmac('md5', key) // sha1, sha256
                   .update('我是加密内容')
                   .digest('hex')
console.log(hash); // 16进制
dgram 创建UPD通信

dns 将域名解析为ip地址 lookup本地 resolve4网络解析

const dns = require('dns');
dns.lookup('www.baidu.com', (err, ip, family) => {
  console.log(ip, family)
})

events 自定义事件

const EventEmitter = require('events');
class Bus extends EventEmitter {}
const bus = new Bus()
bus.on('run', (name) => {
  console.log(name, 'run')
})
bus.emit('run', 'iwen')

fs 操作文件和文件夹

fs.stat  获取文件的信息
fs.rename
fs.unlink  删除文件
fs.mkdir
fs.readdir
fs.readFile
fs.writeFile
fs.createReadStream
fs.createWriteStream
fs.existsSync    exists被废弃

url 处理url 浏览器中可以直接使用URL

const url = require('url');
let bd = 'https://www.baidu.com'
var aa = new url.URL(bd)
url.format(aa) // https://www.baidu.com
url.parse(bd)  // aa
url.resolve(bd, 'a') // https://www.baidu.com/a

http 创建node服务

const http = require('http');
http.createServer((req, res) => {
  console.log(req.method + ': ' + req.url);
  res.setHeader('Cache-Control', 'no-cache')
  res.end('Hello world');
}).listen(1234);

https 创建https服务

const https = require('https');
const fs = require('fs');
const path = require('path');
// 生成证书命令
// openssl req -x509 -newkey rsa:2048 -nodes -sha256 -keyout localhost-privkey.pem -out localhost-cert.pem
const options = {
  key: fs.readFileSync(path.join(__dirname, './localhost-privkey.pem')),
  cert: fs.readFileSync(path.join(__dirname, './localhost-cert.pem'))
};
https.createServer(options, (req, res) => {
  res.writeHead(200);
  res.end('hello world');
}).listen(1234);

module 暂不支持es6Module

// a.js
module.exports.age = 18

// main.js
const a = require('./a');
console.log(a)

net 创建tcp通信 方法:net.isIP(ip) 事件:connection data end close

const net = require('net');
const server = net.createServer((socket) => {
  socket.end('goodbye');
})
server.listen(1234, () => {
  console.log('opened server on', server.address());
});

util 提供了大量基本用不上的工具方法

util.callbackify(fn);  将promise函数转化为回调形式
util.format(1, 2, 3)  // 1 2 3
util.inspect(obj)  // 对象转字符串
util.isArray(obj)
util.inherits(obj1, obj2) // 继承

猜你喜欢

转载自blog.csdn.net/qq_33988065/article/details/80816321
今日推荐