nodejs

138 阅读2分钟

node版本管理工具nvm

node -v //查看当前node 版本
nvm --help //查找nvm命令
nvm list //查看所有已安装的node版本
nvm use version //改变当前使用的nodejs版本,这个只是当前进程,需要修改默认版本
nvm alias default version //改变node的默认版本

内置模块

常用的内置模块:url, querystring, http, events, fs, stream, readline, crypto, zlib

url

parse:

const url = require('url')
const urlString = 'https://www.baidu.com:443/ad/index.html?id=8&name=mouse#tag=110'
const parsedStr = url.parse(urlString)
console.log(parsedStr)

执行结果
Url {
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com:443',
  port: '443',
  hostname: 'www.baidu.com',
  hash: '#tag=110',
  search: '?id=8&name=mouse',
  query: 'id=8&name=mouse',
  pathname: '/ad/index.html',
  path: '/ad/index.html?id=8&name=mouse',
  href: 'https://www.baidu.com:443/ad/index.html?id=8&name=mouse#tag=110'
}

format:

const url = require('url');
const urlObject = {
  protocol: 'https:',
  slashes: true,
  auth: null,
  host: 'www.baidu.com:443',
  port: '443',
  hostname: 'www.baidu.com',
  hash: '#tag=110',
  search: '?id=8&name=mouse',
  query: { id: '8', name: 'mouse' },
  pathname: '/ad/index.html',
  path: '/ad/index.html?id=8&name=mouse',
  href: 'https://www.baidu.com:443/ad/index.html?id=8&name=mouse#tag=110',
};
const parsedObj = url.format(urlObject);
console.log(parsedObj);

执行结果:https://www.baidu.com:443/ad/index.html?id=8&name=mouse#tag=110

reaolve:

const url = require('url');
var a = url.resolve('/one/two/three', 'four');
var b = url.resolve('http://example.com/', '/one');
var c = url.resolve('http://example.com/one', '/two');

console.log(a);
console.log(b);
console.log(c);

执行结果:
/one/two/four
http://example.com/one
http://example.com/two

querystring

parse:将一个查询字符串转化为对象

const querystring = require('querystring');
var qs = 'x=3&y=4';
var parsed = querystring.parse(qs);
console.log(parsed);

执行结果:
[Object: null prototype] { x: '3', y: '4' }

stringify: 这个方法是将一个对象序列化成一个字符串,与querystring.parse相对

const querystring = require('querystring');
var qo = {
  x: 3,
  y: 4,
};
var parsed = querystring.stringify(qo);
console.log(parsed);

执行结果:x=3&y=4

escape: 可使传入的字符串进行编码

const querystring = require('querystring');
var str = 'id=3&city=北京&url=https://www.baidu.com';
var escaped = querystring.escape(str);
console.log(escaped);

执行结果:
id%3D3%26city%3D%E5%8C%97%E4%BA%AC%26url%3Dhttps%3A%2F%2Fwww.baidu.com

unescape:可将含有%的字符串进行解码

const querystring = require('querystring');
var str =
  'id%3D3%26city%3D%E5%8C%97%E4%BA%AC%26url%3Dhttps%3A%2F%2Fwww.baidu.com';
var unescaped = querystring.unescape(str);
console.log(unescaped);

执行结果:id=3&city=北京&url=https://www.baidu.com

http/https

开启服务:

const http = require('http');
http
  .createServer((req, res) => {
    console.log('请求接口');
    res.writeHead(200, {
      'content-type': 'text/plain',
    });
    res.write('hello nodejs');
    res.end();
  })
  .listen(3000);

http请求:

//get请求
 https.get(`https://m.lagou.com/listmore.json${url}`, (res) => {

    res.on('data', (chunk) => {
      data += chunk
    })

    res.on('end', () => {
      response.end(JSON.stringify({
        ret: true,
        data
      }))
    })
  })
  
  
//request请求
const https = require('https')
const querystring = require('querystring')

const postData = querystring.stringify({
 name:"123",
 age:27
})

const options = {
  protocol: 'https:',
  hostname: 'ik9hkddr.qcloud.la',
  method: 'POST',
  port: 443,
  path: '/index.php/trade/add_item',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': Buffer.byteLength(postData)
  }
}

function doPost() {
  let data

  let req = https.request(options, (res) => {
    res.on('data', chunk => data += chunk)
    res.on('end', () => {
      console.log(data)
    })
  })

  req.write(postData)
  req.end()
}

文件读写:

writeFile写文件会覆盖之前的内容。

const fs = require('fs');
fs.writeFile('./text.txt', 'hello2', (err, data) => {
  if (err) {
  } else {
    console.log('文件读写成功');
  }
});

进程管理

代码:

function main(argv) {
  console.log(argv);
}

main(process.argv.slice(2));//process是内置模块

执行:

截屏2022-05-22 下午5.57.02.png