Node
全局变量
使用 global
定义 node 全局变量,在浏览器环境是不能使用的
在 ECMAscript 2020 的时候提供了 globalThis
API,在浏览器环境和 node 环境的通用的
js 由于三部分组件 ECMAscript、DOM、BOM
查看可运行的命令
shll
npm ls -g
内置 API
- __dirname
获取当前执行文件的绝对路径
- __filename
获取当前执行的文件据对路径
- Buffer
处理二进制数据
- process
获取到执行命令后面所跟的参数,返回一个数组
JSDO
使用 js 模拟 dom
shell
npm i jsdom
CSR
客户端渲染
SSR
服务端渲染
SEO
讲究 TDK
分别是:title、description、Keywords
path 模块
主要负责处理路径相关操作
os 模块
主要和操作系统交互的操作
os.platform()
获取操作平台 os.release()
获取系统版本 os.version()
获取系统版本号 os.homedir()
获取用户所在目录
{open:true}
的启动命令就是根据不同的操作系统调用不同的 shell 文件
js
const os = require('os')
const { exec } = require('child_process')
const platform = os.platform()
const open = (url) => {
if (platform === 'win32') {
exec(`start ${url}`)
} else if (platform === 'darwin') {
exec(`open ${url}`)
} else if (platform === 'linux') {
exec(`sdg-open ${url}`)
}
}
open('http://baidu.com')
process
process.exit
结束进程 process.env
环境变量
安装 cross-evt 配置环境变量
ffmpeg
可以实现视频格式转换、添加水印、去除水印
events
针对事件操作,发布订阅模式
util
内置工具模块
pngquant
处理 png 图像,可压缩,类似 ffmpeg
fs
读取文件
crypto
加密模块
对称加密
js
const crypto = require('node:crypto')
// console.log(crypto)
const key = crypto.randomBytes(32)
const iv = Buffer.from(crypto.randomBytes(16))
// 算法
// key
// iv
const cipher = crypto.createCipheriv('aes-256-cbc', key, iv)
cipher.update('你好啊', 'utf-8')
const result = cipher.final('hex')
console.log(result)
// 解密
const de = crypto.createDecipheriv('aes-256-cbc', key, iv)
de.update(result, 'hex', 'utf-8')
const result2 = de.final('utf-8')
console.log(result2)
非对称加密
js
const crypto = require('node:crypto')
// 公钥和私钥
const { privateKey, publicKey } = crypto.generateKeyPairSync('rsa', {
modulusLength: 2048
})
// 公钥加密
const encrypted = crypto.publicEncrypt(publicKey, Buffer.from('加密的内容'))
console.log(encrypted.toString('hex'))
// 私钥解密
const decrypted = crypto.privateDecrypt(privateKey, encrypted)
console.log(decrypted.toString())
哈希函数 - 不能解密
js
const crypto = require('node:crypto')
const hash = crypto.createHash('sha256') // 或者使用 md5
hash.update('加密的内容')
console.log(hash.digest('hex'))
zlib
压缩文件模块
http
启动服务
js
const http = require('node:http')
const url = require('node:url')
const server = http.createServer((req, res) => {
const { pathname } = url.parse(req.url)
if (req.method === 'GET') {
if (pathname === '/login') {
res.end('登录')
return
}
res.end('GET')
} else if (req.method === 'POST') {
res.end('POST')
}
})
server.listen(98, () => {
console.log('运行中...')
})
反向代理
使用 http-proxy-middleware 实现反向代理
邮件服务
js-yaml 配置账号密码 nodemailer 发送邮件