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