nodejs基础

Posted by アライさん on 2021年10月13日

常用命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#查看node_modules的安装位置
npm root -g
#安装到当前node_modules中
npm install packageName
#全局安装
npm install -g packageName
#全局范围内已安装的包
npm list -g
#发现包的新版本情况
npm outdated
#升级包(会导致package-lock.json变更,但不会升级主版本,一般API不兼容时才会发生主版本变更)
npm update
#升级包,包括主版本不同也升级
npm install -g npm-check-updates
ncu -u
npm update
#配置列表
npm config list

npm设置代理

方法一:编辑**~/.npmrc**文件

1
2
proxy=http://127.0.0.1:7890/
https-proxy=http://127.0.0.1:7890/

方法二:

1
2
npm config set proxy http://127.0.0.1:7890  
npm config set https-proxy http://127.0.0.1:7890

npx

1
2
3
4
5
6
# 无需先安装就可以使用cowsay
npx cowsay "测试"
# 直接运行url里的代码
npx url
# 使用不同的版本运行代码
npx node@12

引用包

1
const name = require('packageName')

二进制包则直接放到node_modules/.bin/ 文件夹下。

字符串格式化

1
2
console.log('我的%s已经%d岁', '猫', 2)
console.log('%o', Number)
  • %s 会格式化变量为字符串
  • %d 会格式化变量为数字
  • %i 会格式化变量为其整数部分
  • %o 会格式化变量为对象

nextTick、setImmediate

process.nextTick 快于 setImmediate 快于 setTimeout

process.nextTick在下一个滴答开始之前执行。
setTimeout在下一个滴答结束时执行。
setImmediate与0毫秒的setTimeout类似。

基础代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
const express = require('express');
const app = express();
const bodyParser = require('body-parser');

app.use(bodyParser.json());

app.use(function (req, res, next) {
//每次请求都会输出一条日制
console.log('request log ' + new Date());
next();
});

//匹配不到路由的处理
app.use(function (req, res, next) {
res.send('没有找到api');
});

app.get('/', (req, res) => {
res.send("hello world");
});

app.get('/hi', (req, res) => {
res.send("Hi");
});

//匹配 localhost:8080/hi/数字
app.get(/^\/hi\/(\d+)$/, (req, res) => {
res.send("Hi: id=" + req.params[0]);
});

//匹配 localhost:8080/hi/内容。匹配按顺序进行。如果它在正则之前,它会先匹配到
app.get('/hi/:user', (req, res) => {
res.send("Hi: " + req.params.user);
});

app.post('/hi', (req, res) => {
res.send('HI: ' + JSON.stringify(req.body));
});


app.listen(8080, () => {
console.log('Is listening on port 8080');
});