Node.js路由知识

Node.js路由知识

什么是路由?

用大白话说,当用户访问http://example.com是一个页面,但是例如http://example.com/123,那么服务器应该调用什么函数才给用户返回这个123的页面信息呢?这个就是路由的事情了,如果没有路由,不关你的页面是什么样子的,都会返回同样的信息;但是有了路由我们就可以根据不同路径和方法来执行不同的逻辑了;

Node.js路由基础

在现实世界中,我们大多数都会用express来实现我们的路由,因为会更加简单,更加清晰,这里我们仅仅演示原生Node.js的路由,后续会一起学习express的路由

  • 回忆一下之前的代码
vue 复制代码
const http = require('http');
const server = http.createServer((request,response) => {
    response.writeHead(200,{'Content-type':'text/html;charset=utf-8'})
    response.end('Hello!,这是我的第一个Node.js服务器')
})

server.listen(8000,'127.0.0.1',()=>{
    console.log('服务器正在运行,访问地址:http://127.0.0.1:8000');
})
  • 这里首先我们将引入url,我们看这个会返回什么
vue 复制代码
const http = require('http');
const url = require('url')
const server = http.createServer((request,response) => {
    console.log(request.url)
......

这里直接返回了我们的路径

  • 所以我们就可以使用if/else手写一个路由表
vue 复制代码
const server = http.createServer((request,response) => {
    console.log(request.url)
    const pathName = request.url;
    const chatset = {'Content-type':'text/html;charset=utf-8'}
    if(pathName === '/' || pathName === '/overview'){
        response.writeHead(200,chatset);
        response.end('这个是主页');
    }

这个响应大家都能看懂,很坚韧,status.Code就是http的状态码

  • 所以我们也可以加入产品页啥的
javascript 复制代码
    const pathName = request.url;
    const chatset = {'Content-type':'text/html;charset=utf-8'}
    if(pathName === '/' || pathName === '/overview'){
        response.writeHead(200,chatset);
        response.end('这个是主页');
    } else if(pathName === '/product'){
        response.writeHead(200,chatset);
        response.end('这个是产品页');
    }
  • 但是还有一个问题,例如我们输入一个并不再我们规则里面的,他会一直转圈等待,这时候,一般情况下都是由一个特殊的404页面,只要是找不到页面的都会规则到这个页面
vue 复制代码
const server = http.createServer((request,response) => {
    console.log(request.url)
    const pathName = request.url;
    const chatset = {'Content-type':'text/html;charset=utf-8'}
    if(pathName === '/' || pathName === '/overview'){
        response.writeHead(200,chatset);
        response.end('这个是主页');
    } else if(pathName === '/product'){
        response.writeHead(200,chatset);
        response.end('这个是产品页');
    } else {
        response.writeHead(404,chatset);
        response.end('页面不存在!')
    }
})

缺点 :手动解析URL、参数、方法,代码很快变得臃肿。对于动态路径(如/users/123)需要正则或字符串分割,不适合生产环境。

相关推荐
万敏13 小时前
Vue3 全栈实战:第一阶段复盘(第1-8周)
vue.js·node.js·全栈
濮水大叔15 小时前
舒服了,CabloyJS 的 AI Spec 驱动开发会自动生成甘特图和燃尽图
typescript·node.js·vibecoding
FungLeo17 小时前
成为全栈·Node 后端篇·部署上线:从本地起服到真正对外服务
node.js·后端部署·成为全栈
妙码生花20 小时前
golang 应用服务端部署(使用 systemd 服务)
开发语言·人工智能·后端·golang·node.js·php·gin
柚稚姐姐21 小时前
npm install pnpm -g npm error code EACCES npm error syscall symlink
前端·npm·node.js
FungLeo2 天前
成为全栈·Node 后端篇·容器化:给 Node 应用写一个像样的 Dockerfile
docker·node.js·dockerfile·成为全栈·后端服务容器·docker 容器
WeiXin_DZbishe2 天前
基于springboot大学生提问箱系统-计算机毕设【课程设计】72593
javascript·vue.js·spring boot·vscode·python·node.js·php
xixiaoyunya2 天前
Docker 容器化部署实战:从零搭建一套完整的 Nginx + Node.js + MySQL + Redis 项目环境
nginx·docker·node.js
晴天162 天前
npm install -f(--force)深度解析:作用原理、报错根源与风险避坑指南
前端·npm·node.js
还是大剑师兰特2 天前
Swagger 在 Node.js 项目中的安装和完整使用方法
node.js