Npm
DOS
dos目录操作
dir 查看当前目录下的所有文件
tree 以树状结构展示当前目录下的所有文件及子目录下的所有文件
cd 文件夹名称 进入当前目录下的某一个目录
cd.. 返回上一级目录
d: 切换盘符到d盘
dos文件操作
md test 创建test文件夹
rd test 移除文件夹
xcopy test test2 复制文件夹
copy index.js test.js 拷贝一份文件
type nul>index.js 创建文件
echo "console.log('hello')" >index.js 向文本中写入内容
type index.js 查看文件内的文本内容
ren index.js abc.js 给文件或者目录重命名
del index.js 删除文件
move index.js a 移动文件或文件夹(可重命名)
其他命令
cls 清屏
ipconfig 查看当前电脑ip信息
ping www.baidu.com 测试某一个链接地址的网速
systeminfo 查看电脑信息
ctrl+` vscode打开集成终端
ctrl+c 停止当前命令
复制文本:选中后右键
粘贴文本:右键
linux系统命令:远程服务器/mac本
找到"终端"打开
根目录只有一个 /
默认打开的终端:~ 当前用户的文件夹
去某个文件夹:cd /aa/bb/
查看当前文件夹下的所有文件和文件夹:ls
创建文件夹:mkdir 文件夹名称
删除文件夹:rm -rf 文件夹名称
创建文件:touch 文件名称
删除文件:rm -rf 文件名称
给文件中写内容:echo 内容 > 文件名称
清屏:clear
查看ip:ifconfig
npm操作
初始化
npm init
文件夹由npm包管理器管理
package name: //包名称
version: //版本号
description: //描述
entry point: //切入点 检测主文件
test command: //测试命令 用于单元调试
git repository: //开源代码托管地址
keywords: //关键字
author: //作者
license: //认证号
package.json
{
"name": "exe", //包名 全网唯一
"version": "1.0.0", //版本号
"description": "", //描述
"main": "index.js", //主要 功能js
"keywords": [], //关键字
"author": "", //作者
"license": "ISC", //认证
"scripts": {
"test": "react-scripts test --env=jsdom", //脚本
},
"bugs": {
"url":"xxx" //bug提交地址
},
"homepage": "xxx" //主页地址
"devDependencies": {
"gulp": "^4.0.2" //开发依赖
},
"dependencies": { //生产依赖
"jquery": "^3.6.0",
"lodash": "^4.17.21",
"mysql": "^2.18.1",
"underscore": "^1.13.2"
}
}
node package version
13.4.6
major:13 主版本号
minor:4 副版本号
patch:6 补丁号(奇数不稳定 偶数稳定)
npm版本符号
^:锁定major 其他默认最高
~:锁定major和minor 其他最高
空:锁定major和minor和patch
*:最新版本
一般配合 npm update 使用
查看包所有版本号
npm view 模块 versions
脚本script
可自定义运行脚本
"dev":"node ./xxx.js"
运行时为 npm run dev
特殊脚本start test 可不用加run
"start":"node ./xxx.js"
并行串行
"dev":"node ./xxx.js & node ./yyy.js"
并行
"dev":"node ./xxx.js && node ./yyy.js"
串行
下载包
npm install xxx
默认安装最新版本 安装指定版本 npm install bootstrap@3.3.7
[安装3.3.7版本的bootstrap]
全局安装
npm install --global xxx
给全局安装xxx
或
npm i -g xxx
安装开发依赖
npm i --save-dev xxx
或
npm i -D xxx
安装生产依赖
npm i --save xxx
或
npm i -s xxx
安装所有依赖
npm i
删除包
npm uninstall xxx
清除缓存
npm cache clear -f
[-f 强制]
强制下载(版本冲突时不推荐)
npm install xxx --force
忽略引用包版本不同的问题下载(版本冲突时推荐)
npm install xxx --legacy-peer-deps
npx
一个npm包执行器,指在提高从npm注册表使用软件包时的体验 ,
npm使得它非常容易地安装和管理托管在注册表上的依赖项,
npx使得使用CLI工具和其他托管在注册表。
npx 安装为临时安装 不会担心长期污染
–no-install 强制使用本地模块 没有会报错
npx --no-install http-server
–ignor-existing 忽略本地模块 强制安装 用于使用最新版本等
npx --ignor-existing http-server
npm拓展
获取权限
(1)以管理员身份运行vs code
(2)在终端执行:get-ExecutionPolicy,显示Restricted(表示状态是禁止的)
(3)在终端执行:set-ExecutionPolicy RemoteSigned
(4)在终端执行:get-ExecutionPolicy,显示RemoteSigned
npm切换源
npm config get registry #查看npm当前镜像源
npm config set registry https://registry.npm.taobao.org #npm镜像源设置为淘宝
yarn 2.0
快速、可靠、安全的依赖管理工具
初始化一个新项目
yarn init
添加依赖包
yarn add [package] #默认安装到生产依赖
yarn add [package]@[version]
yarn add [package]@[tag]
yarn add [package] --dev #安装到开发依赖
yarn add [package] --peer #安装到peerDependencies
yarn add [package] --optional #安装到optionalDependencies
升级依赖包
yarn upgrade [package] #升级依赖
yarn add [package]@[version]
yarn add [package]@[tag]
移除依赖包
yarn remove [package]
安装全部依赖包
yarn
安装临时依赖包
yarn dlx [package]
更新全部依赖
yarn up
yarn切换源
yarn config get registry #查看yarn当前镜像源
yarn config set registry https://registry.npm.taobao.org #yarn镜像源设置为淘宝
nrm源管理
切换镜像源工具
npm install --global nrm
全局安装nrm
nrm --version
查看nrm版本号
nrm ls
查看nrm目录
nrm test
测速
nrm -h
查看当前可选源
nrm use taobao
切换镜像源地址
nodemon
监视服务端源码修改并重启服务端(node monitor /node监视器)
其他进程管理工具(supervisor/forever/pm2)
npm install nodemon -g
nodemon xxx.js
修改package.json 配置启动脚本只监听指定文件变化
http-serve
使用http-server搭建静态资源服务器
npm install http-server --global
npm i http-server -g
修改端口http-server [path] [options]
eg:http-server ./ -p 8888
快捷启动hs
cross-env
运行跨平台设置和使用环境变量的脚本
能提供一个设置环境变量的script,并兼容多系统
npm install --save-dev cross-env
NODE_ENV环境变量将由cross-env设置打印 process.env.NODE_ENV ===‘production’
log4js
js的日志记录
安装后在开发环境配置log.js
const log4js = require('log4js')
log4js.configure({
appenders: { cheese: { type: 'file', filename: 'cheese.log' }},
categories: { default: { appenders: ['cheese'], level: 'error' }}
})
const logger = log4js.getLogger('cheese')
logger.level = 'debug'
logger方法
logger.trace()
logger.debug()
logger.info()
logger.warn()
logger.error()
logger.fatal()
http-proxy-middleware
通过中间件正向代理实现跨域
const { createProxyMiddleware } = require('http-proxy-middleware')
//在路由中添加判断
if (/^\/api/.test(url)) { //如果路由中带有api(自定义)则设置代理跨域提供接口
const proxy = createProxyMiddleware('/api', { //api为暗号 返回的是一个函数proxy
target: 'http://www.baidu.com', //跨域地址 替换原来的协议及域名
changeOrigin: true, //允许切换源
pathRewrite: {
'^/api': '' //路径重写,将路径中的api去掉(不需要可以不写)
}
})
proxy( req, res ) //函数调用并传入 res,req
} else {
console.log('error')
}
爬虫与cheerio
通过http.request请求获得数据流,拼接成字符串再通过cheerio进行过滤,爬取数据,可以通过递归爬连接获取图片视频等
const cheerio = require('cheerio')
function filterData(data) {
const $ = cheerio.load(data)
$('选择器').each((index, ele) => {
console.log($(ele).text());
})
}
通过cheerio可以在服务器端进行伪DOM操作,代码中function filterData()为http.request获得数据流时的回调函数,cheerio中均为jquery操作
mime
通过文件后缀名返回文件类型
const mime = require('mime')
const fs = require('fs')
require('http').createServer((req, res) => {
const urlString = req.url
const type = mime.getType(urlString.split('.')[1]) //获取query中请求文件后缀并转换为响应头
res.writeHead(200, {
'content-type': type //设置相应的响应头
})
const file = fs.readSync(`.${ urlString }`) //fs读取静态文件并返回
res.end(file)
})
.listen(8080, () => {
console.log('listening at 8080');
})
json-server
部署静态服务器 访问api返回设置好的json数据
配置json-server
const market = require('market.json的路径')
const focus = require('focus.json的路径')
module.exports = () => { //固定语法
return {
market,
focus
}
}
配置api
{
"/api/market":"/market",
"/api/focus":"/focus"
}
键跟值作为路由都能返回数据,便于区分加上/api
启动json-server
json-server ./配置json-server.js的路径 -r ./配置api.json的路径 -p 9000 --watch
-r 配置路由
-p 配置端口
–watch 监听
jsonwebtoken
生成加密token
对称加密
const jwt = require('jsonwebtoken')
const tk = jwt.sign({ username: 'admin' }, 'cccc') //加密 第一个参数为需要加密的参数,第二个为密钥
const result = jwt.verify(tk, 'cccc') //解密 第一个参数为token,第二个为密钥
非对称加密
生成公钥及私钥
> openssl
#生成私钥:
openssl > genrsa -out rsa_private_key.pem 2048 #生成多少位token
#根据私钥生成公钥
openssl > rsa -in rsa_private_key.pem -pubout -out rsa_public_key.pem
通过fs文件读取公钥及私钥
const privateKey = fs.readFileSync('路径下的rsa_private_key.pem')
const tk = jwt.sign({ username: 'admin' }, privateKey, { algorithm: 'RS256' })
//加密,第一个参数为加密的数据,第二个为私钥,第三个为加密算法(非对称)
const publicKey = fs.readFileSync('路径下的rsa_public_key.pem')
const result = jwt.verify(tk, publicKey)
//解密,第一个参数为token,第二个为公钥
dayjs
用于处理时间日期对象
npm install dayjs --save
或
<!--导入dayjs的库文件-->
<script src="https://cdn.bootcdn.net/ajax/libs/dayjs/1.4.1/dayjs.min.js"></script>
//直接调用dayjs()得到的当前时间
//dayjs(给定的日期时间)得到指定的日期
const drStr = dayjs().format('YYYY-MM-DD HH:mm:ss')