Nodejs的简介 (运行Javascript编程语言的环境)
- 浏览器外运行v8引擎(google chrome 内核)--提高效率
- libuv包--异步I/O ,事件驱动模型
- 全局/内置模块/第三方模块 API
- 底层调用操作系统 windows/linux/macOS
- 底层代码是C++编写的。
nodejs 安装
- 官网地址:https://nodejs.org/zh-cn/ (安装包), http://nodejs.cn/ (api学习)
- mac OS 中使用Homebrew安装
- nvm-windows 安装
nodejs js示例
系统cpu信息获取
const os= require('os')
console.log(os.cpus());
nodejs 创建服务
- web服务
const http = require('http')
const server = http.createServer((req,res)=>{
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end('webServer')
})
server.listen(8088,'127.0.0.1',()=>{
console.log('server成功');
})
- 服务运行
node server.js
//server.js 自定义js文件运行 服务访问(浏览器中)
http://127.0.0.1:8088
//浏览器中显示 webServer
自动化工具
nodemon (server.js中数据发生变化,自动重启服务)
1. 安装 `npm install -g nodemon `
2. 检查安装成功 `nodemon -v` //2.0.4 输出版本号安装成功
3. 使用 `nodemon server.js` //cd 到js文件所在目录
常用框架
express
1. 创建web服务
const express = require('express')
const app = express()
app.use(express.json()) //解析 application/json 数据
app.use(express.urlencoded({ extended: true })) //解析 application/x-www-form-urlencoded 数据
app.get('/kk/byks',(req,res)=>{
let {ks}=req.query;
res.json({
id:1,
value:'固态',
ks
})
})
app.post('/kks',(req,res,next)=>{
res.json({
id:1,
value:'固态',
kks:req.body.kks
})
next(new Error('错误'))
})
app.listen(8088,()=>{
console.log('okok');
})
- router
app.all('/kkall',(req,res)=>{
res.json({
id:221,
value:'所有请求方式',
method: req.method
})
})
多用于日志
app.get('*',(req,res)=>{
res.json({
id:221,
value:'所有请求uri',
uri:req.path
})
})
- 中间件(可插拔、可扩展)
结构:
a. 函数 //异常处理|业务功能处理(转交控制权next())|结束响应(路由的的处理)
b. 函数入参 // (err, req, res, next) next是个函数
场景:app 级别 | router 级别
异常处理
function error_handler(err,req,res,next){
if(err){
res.status(500)
.json({
message:'服务器异常'
})
}
}
业务处理
function params_filter(req,res,next){
let {name} = req.query
if(!name || name.length){
res.json({
message:'缺少参数'
})else{ next()}
}
}
app 级别
function log_more(req,res,next){
console.log('这是个app级别的中间件')
next()
}
app.use(log_more)
app.get('/kk',(req,res)=>{
let {mm}=req.query;
res.json({
id:1,
value:'固态',
mm
})
})