一、准备工作
- npm init //初始化项目
- npm i express //模板框架
- npm i mongoose //数据库管理
- nom i nodemon -g //热更新服务器
5.npm i art-template express-art-template //模板引擎
其他:pm2,管理简化node操作
性能测试工具:loadruner、jmeter
接口测试工具:postman
抓包工具:fiddle
数据库管理:Navicat,Xshell,robot3T
项目管理:禅道、QC
二、node
导入:require;导出:module.exports
exports:是module.exports对象的一个地址引用,exprots={},导出一个对象的时候,会改变原先的引用地址,从而exports,和module.exports指向地址改变。
require:也是module.reequire上的一个对象。
- 全局对象
- 路径
__dirname:用来动态获取文件模块所属目录的绝对路径 (目录)
__filename:用来动态获取当前文件的相对路径(文件)
- process
process.argv //返回数组,第一个元素node,第二个.js文件名称,第三个命令行传入的参数。
process.execPath //开启当前进程的绝对路径
process.env //返回用户当前环境信息
process.pid //当前进程Pid;
process.platform //返回当前操作系统平台。
process.stdin //标准输入流
process.stdout //标准输出流
//实现一个console.log
funciton log(msg){
process.stdout.write(msg)
}
- Buffer 类
new Buffer(size) //创建一个buffer对象,并分配一个长度,不能更改。实例方法,类的静态方法。
buffer.write(str,num,num,code)//1.要写入的字符串,2.从buffer第几位开始写入,3.写入长度。4.编码
buffer.string(code,num.num)//1.变为字符串的编码,2.开始位,3.结束位
buffer.slice()//剪切,不包含最后一位
- 内置模块
- http
- http.createServer() 创建服务
- server.on(‘request’,(req,res)=>{});接收数据请求。响应头,告诉浏览器如何解析数据。
- res.setHeader(‘Content-Type’,‘text/plain;charset=utf-8’):text普通字符串,html相应。一般只为字符指定编码。
- request //客户端对象
- response //服务端对象
- url
- url.parse(‘url’,true) 解析请求的路径信息,解析为对象。
- url.format() 把路径对象,转为url字符串
- fs
- fs.readFile() 根据地址输出文件内容,同步一直输出完。1参:读取路径。2参:回调函数,error,data
- fs.writeFile() 覆盖性创建文件。1参:写入路径。2参:写入内容。3参:error错误回调
- fs.appendFile() 写入文件,追加文件内容。
- fs.readFile() 读取文件信息。默认得到buffer,二进制数据。msg.toString(‘utf-8’)
- fs.unlink() 删除文件。
- fs.readdir() 读取文件路径。
- fs.stat() 类里面的stats.isFile判断是否是一个文件
- fs.mkdir() //创建文件夹
- fs.readdir() //读取文件夹
- path
- path.basename() //获取一个路径的文件名
- path.dirname() //获取路径中的目录部分
- path.extname() //获取路径中的扩展名
- path.parse() //把路径转为对象
- path.join() //路径拼接
- path.isAbsolute() //判断呢一个路径是否是绝对路径
- qs
- qs.parse(string,’&’,’=’) 把字符串变为对象
- qs.stringify(obj,’’,’’) 把对象变为字符串
- qs.escape() 编码
- qs.unescape 解码
- os 系统信息模块
- erro 错误信息模块
- 第三方模块(插件)
- npm i nodemailer //发邮件
- npm i json-server -g //json文件api化,配合mock.js
使用链接 - npm i cheerio //爬虫
三、服务器端
Ubuntn 镜像
- 新实例更新 apt update
- 查看 apt show nginx
- 安装nginx ,apt install nginx -y
- 安装 mongodb,apt install -y mongodb-server
- 安装给git,apt install -y git
- 生成key,ssh-keygen
- 查看key,cat
- 安装node, apt install -y nodejs
- 安装npm, apt install -y npm
- 淘宝镜像,npm config set registry https://registry.npm.taobao.org
- 升级node,npm i -g n,然后 n latest
- 创建根目录文件,mkdir /data ,cd /data
- 把git仓库克隆里面
- 安装pm2, npm i -g pm2
- 配置nginx,vscode安装remote,连接服务器,进入etc/nginx/
- 进入http://nginxconfig.io网站进行配置,复制文件之后
Nginx
- 重启
- service nginx start
- systemctl start nginx
- 不小心删掉etx/nginx文件的话
dpkg --force-confmiss -i /var/cache/apt/archives/nginx-common_*.deb
四、pm2
安装: npm install pm2@latest -g
启动 :pm2 start app.js
停止 :pm2 kill
pm2启动命令
1. pm2 start app.js:启动nodeJs应用,进程的默认名称为文件名app
2. pm2 start app.js --name mynode:启动node,并指定进程名称为mynode
3. pm2 start app.js -i max:根据有效CPU数目启动最大进程数目
4. pm2 start app.js -i 3:启动3个进程
5. pm2 start app.js --watch:实时监控的方式启动,app.js文件有变动时,pm2会自动reload
6. pm2 start app.js -x:用fork模式启动 app.js 而不是使用 cluster
7. pm2 start app.js -x -- -a 23:用fork模式启动 app.js 并且传递参数(-a 23)
8. pm2 start app.json:启动进程, 在 app.json里设置选项
9. pm2 start app.js -i max -- -a 23:在 -- 之后给 app.js 传递参数
10. pm2 start app.js -i max -e err.log -o out.log:启动并生成一个配置文件
pm2查看与监视进程
1. pm2 list:显示所有进程;
2. pm2 show 0,pm2 info 0:查看进程id为 0 的详细信息;
3. pm2 monit:进入监视页面,监视每个node进程的CPU和内存的使用情况。
pm2停止、删除进程
1. pm2 stop/delete 0:停止/删除id为 0 的进程;
2. pm2 stop/delete all:停止/删除所有进程。
pm2重启、重载
1. pm2 restart 0:重启id为 0 的进程;
2. pm2 restart all:重启所有进程;
3. pm2 reload 0:0秒停机重载id为 0 进程(用于 NETWORKED 进程);
4. pm2 reload all:重载所有进程。
pm2日志操作
1. pm2 logs:显示所有进程的日志;
2. pm2 logs 0:显示进程id为 0 的日志;
3. pm2 flush:清空所有日志文件;
4. pm2 reloadLogs:重载所有日志。
pm2 startup:产生 init 脚本,保持进程活着。
五、express
- 创建服务
let app = express(); - get
app.get('/', (req, res) => {
res.end('hello index')
})
req.query:解析get请求。
- Post,参数解析
需要安装body-parser插件
npm i body-parser
application/x-www-form-urlencoded 表单传参
application/json json传参。
applocation/formData 图片用
- 路由
- token
- 中间件,拦截器
- 静态资源目录
app.use('/public/',express.static('/public/'))
- 内置模块,router
六、Koa
- koa-static-cache:静态文件代理服务
- koa-router:路由
- koa-swig:模板引擎
- koa-bodyparser:body解析
- koa-multer:formIData解析
七、MongoDB
mongodb下载地址:http://dl.mongodb.org/dl/win32/x86_64
1.安装
* 安装的时候,最后一项不要点。(谨记)
* 不是内部变量的话,配置环境变量。
* 在安装的磁盘目录下,新建data/db
* 一个命令窗口,mongod:开启服务数据库,不要关;一个mongo:连接数据库,可以操作数据库;
2.指令
* cls //清屏
* dir 查看文件目录
* mongod 启动数据库
* mongo 调起操作数据库
> mongod --dbpath = 数据存储目录路径 // 修改默认的数据存储,目录
> show dbs // 显示当前数据库连接池中的所有的数据库
> use test// 有则切换,无则创建并且切换至test数据库
>.db.dropDatabase();删除数据库,删除当前所在的数据库
> db.createCollection('users') // 创建集合----创建表
> db.suers.drop() 删除当前集合表
>db.createCollection('users', {
capped : true, // 创建固定集合
autoIndexId : true, // 自动在 _id 字段创建索引
size : 6142800, // 整个集合空间大小 6142800 KB
max : 10000 // 文档最大个数为 10000 个 ,最多存储10000条数据
})
> db.getCollectionNames() // 打印出当前数据库中所有的集合
> db.users.insert({username: '名字', run: 50}) // 插入一条数据
> db.users.find() // 查询到的三条数据
> db.users.find().toArray() // 查询数据转换为数组
> db.users.find({},{_id:0}) // 第一个{}查询条件,第二个{}表示显示字段,1为显示,0不
> db.users.updateOne({run: 0},{$set: {run: 5}}) // 更新单条数据
> db.users.updateMany({run: 10},{$set: {run: 20}}) // 更新多条数据
> db.users.remove({ "username" : "昵称"}) //删除数据
> db.users.updateMany({}, {$inc: {run: +10}}) // 更新--- 自增
> db.users.find({run: {$gte: 20}},{_id:0}) // 查询大于等于20的数据
> db.users.find({},{_id:0}).limit(3) // 查询3条数据
> db.users.find({},{_id:0}).limit(3).skip(1) // 从第2条开始,选择3条,分页功能
> db.users.find({run: {$gte: 10, $lte: 30}},{_id:0}) // 价格区间查找
> db.users.find({},{_id:0}).sort({run: 1}) // 以run升序
八、桌面应用
- electron builder nsis