前端全栈开发之:Node.js

Nodejs的简介 (运行Javascript编程语言的环境)

  1. 浏览器外运行v8引擎(google chrome 内核)--提高效率
  2. libuv包--异步I/O ,事件驱动模型
  3. 全局/内置模块/第三方模块 API
  4. 底层调用操作系统 windows/linux/macOS
  5. 底层代码是C++编写的。

nodejs 安装

  1. 官网地址:https://nodejs.org/zh-cn/ (安装包), http://nodejs.cn/ (api学习)
  2. mac OS 中使用Homebrew安装
  3. nvm-windows 安装

nodejs js示例

系统cpu信息获取

const os= require('os')
console.log(os.cpus());

nodejs 创建服务

  1. 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成功');
})
  1. 服务运行
    node server.js //server.js 自定义js文件运行

  2. 服务访问(浏览器中)
    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'); 
})
  1. 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
        })
})
  1. 中间件(可插拔、可扩展)
    结构:
    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
    })
})
上一篇
下一篇