const http = require('http'):起服务
const fs = require('fs'):读写文件
fs.readFile:占用内存、资源使用不均匀
fs.createReadStream:流操作,压缩、加密
const fs = require('await-fs'):async 读写文件
const assert = require('assert'):断言测试
const url = require('url'):处理 http:\/\/www.bing.com:8080/a/b/1.html?a=1&a=2&a=3
const path = require('path'):路径 /a/b/1.html
const querystring = require('querystring'):处理请求参数 username=jianfeng&password=12345
const zlib = require('zlib'):开启 gzip
const crypto = require('crypto'):加密 md5、sha1
__dirname 路径 /Users/jianfeng/www
__filename 路径 /Users/jianfeng/www/http.js
req.query 请求参数
req.params 路径参数
req.body body参数
setInterval(() => {}, 1000)
setTimeout(() => {}, 1000)
process.argv 一个数组,arguments[0] = node环境路径,arguments[1] = 当前执行 js 文件的全路径
node xx.js 1 2 => [ , , 1, 2]
文件后缀
.js .json .node 二进制
npm i nodemon -g
nodemon ./main.js 启动
npm i forever -g
forever start xxx.js 启动
forever restart xxx.js 重启
forever stop xxx.js 关闭
forever stopall 关闭全部
forever list 查看 serve 列表
1.application/x-www-form-urlencoded; charset=UTF-8,普通文本数据
2.application/json; charset=UTF-8,发送 json 数据
3.multipart/form-data; 文件 file 二进制数据
1.环境变量配置:config > index.js
1-1.开发环境配置:config > config.dev.js
2-2.生产环境配置:config > config.prod.js
2.数据库变量配置:libs > database.js
3.http模块:libs > http.js
4.路由管理:libs > router.js
5.处理数据
5-1.get请求:const { pathname, query } = url.parse(req.url, true);
5-2.post请求:分为两种
普通数据:req.on('data', buffer => {} ); req.on('end', () => {} );
文件数据:multiparty;
简单,技术落后(Promise, generater),适合小型应用
get(url, (req, res, next) => {})
post(url, (req, res, next) => {})
use(url, (req, res, next) => {})
中间件,增加这个框架的功能:
multer: 处理 file 数据
body-parser: 处理普通 post 数据
cookie-parser:不能跨域访问,最大 4K,存在浏览器,请求时会发给服务器,安全性差,使用签名方式相对安全
1.普通 cookie:req.cookies
2.sign cookie:req.signedCookies
cookie-session:存储在服务器,不是独立的,基于cookie
应用:
1.路由处理
express/server_basic.js
express-db/router.js
2.body处理
express/serve_body-parser.js
3.报错处理
express/server_basic.js
4.静态资源处理
express/server_basic.js
express-db/server.js
5.文件处理
express/server_multer.js
6.模版处理
express/art_server.js
express/nunjucks_server.js
express/engine_server.js
7.数据库处理
express-db/db.js
适合大型应用
v1 generator
v2 过渡版 generator 和 async
v3 async/await
ctx.method: 请求方法
ctx.url: url
ctx.path: 路径部分,不包括域名和 query
ctx.query: query 数据
ctx.ip: 客户端的 IP
ctx.headers:请求头
ctx.throw(code, msg): 报错并退出
ctx.assert(条件, code, msg):断言测试
中间件:
koa-router:路由管理
router.get(url, async (ctx, next) => {})
router.post(url, async (ctx, next) => {})
router.all(url, async (ctx, next) => {}) 什么请求方法都认可
1.嵌套路由
/user
/
/company
/admin
/news
/sport
/woman
/cart
2.参数路由:/news/:id/
koa-static:处理静态文件的访问
koa-better-body:处理 file 和 post 数据
koa-session: 操作 session
koa-ejs:koa 服务端渲染
应用:
1.路由处理
koa/server_basic.js
koa/server_router.js
koa-project/server.js
2.body处理
koa/server_body.js
koa-project/server.js
3.报错处理
koa/server_error.js
koa-project/server.js
4.静态资源处理
koa/server_static.js
koa-project/routers/static.js
5.文件处理
koa/server_body.js
6.模版处理
koa-project/server.js
koa-render/server_ejs.js
7.数据库处理
koa/server_database.js