Node.js
在server服务端开发常用模块,HTTP模块
处理客户端的网络请求,URL模块
用于处理与解析请求的URL, Query Strings模块
处理客户端通过get/post
请求传递过来的参数,Path模块
文件路径处理服务,stream
处理body提交数据,HTTPS模块
是基于TLS/SSL的HTTP协议,File System模块
服务端操作文件或图片资源等,Net模块
用于创建基于流的TCP或IPC的服务器。
nodejs的真正用途
- 运行在服务器, 作为web server
- 基于node.js构建全栈项目 实现web服务器和数据服务器
- 基于node.js构建中间层 实现中间层转发处理基础业务逻辑
- 基于node.js实现服务端渲染
- 运行在本地 作为打包 构建工具
nodemon 监视文件改动,自动重启 npm i -g nodemon 启动 nodemon xx.js
创建http服务器
1 | // 引入核心对象http |
server端开发注意事项
- 服务稳定性
避免恶意攻击和误操作 服务端不能随便挂掉
PM2进程守候 - 考虑内存和CPU(优化,扩展)
服务端承载很多请求 CPU和内存都是稀缺资源
stream写日志 使用redis存session - 日志记录
服务端记录日志 存储日志 分析日志
- 安全
服务端要防止xss攻击和sql注入
- 集群和服务拆分
服务拆分来承载大流量
处理get请求
get请求 客户端向服务器获取数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16const http = require('http')
const queryString = require('querystring');
const server = http.createServer((req, res) => {
console.log('methods: ', req.method)
const url = req.url
console.log('url: ', url)
req.query = queryString.parse(url.split('?')[1])
console.log('query: ', req.query)
res.end(JSON.stringify(req.query))
})
server.listen(4004, () => {
console.log('server running on port 4004');
})
// 浏览打开 http://localhost:4004/?id=1&name=tew
// 客户端输出 输出 {"id":"1","name":"tew"}
// 服务端输出 methods: GET url: /?id=1&name=tew query: { id: '1', name: 'tew' }
处理post请求
post请求 客户端要像服务端传递数据
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20const http = require('http')
const server = http.createServer((req, res) => {
if(req.method === 'POST'){
console.log('content-type', req.headers['content-type'])
let postData = ''
req.on('data', chunk => {
postData += chunk.toString()
})
req.on('end', () => {
console.log('postData', postData)
res.end('hello world')
})
}
})
server.listen(4004, () => {
console.log('server is running on port 4004');
})
// 使用 postman 发送post请求 并设置 content-type:application/x-www-form-urlencoded
// 发送 请求体为 {id:1, name:tew}
// 服务器端输出 content-type application/x-www-form-urlencoded postData id=1&name=tew