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
- 创建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
});
});
- 中间件(可插拔、可扩展)
结构:
- 函数 //异常处理|业务功能处理(转交控制权next())|结束响应(路由的的处理)
- 函数入参 // (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
});
});