node原生Express框架和Koa框架代码路由方面使用的区别

================= Node 原生写法 ======================
* 在node中实现路由的使用,需要依赖于node的核心模块http模块和fs模块,以下通过一个渲染页面的案例进行呈现.
思路:

Step1: 首先引入http和fs模块
Step2: 使用http创建服务,并监听端口号
Step3: 使用req.url获取请求路由读取index.html页面文件,以此达到渲染页面的效果

// 引入模块
const http = require("http");
const fs = require("fs");
// 创建服务
http.createServer((req,res)=>{
	// 判断请求路由
	if(req.url=="/"){  // 如果是初始路由
	// 使用fs读取index.html文件
	fs.readFile('./index.html',(err,data)=>{
           if(err) throw err;
           //  写请求头
            res.writeHead(200,{'content-type':'text/html;charset=utf-8'});
            res.end(data) // 返数据,返回的是整个html页面
            // console.log(req.method);  // 通过req.method 可以知道请求方式是 GET
       })
   }else if(req.url=="/test"){ // 此时这个"/test"是index.html页面发来的请求,可以使用原生的请求方式
         //此处做具体操作
   }
}).listen(2001,()=>{ // 2001 端口号(一服务只有唯一一个端口号) 监听状态 成功返回以下内容
        console.log('node服务创建完毕!')

})

* 总结:在node原生代码中路由是使用req.url判断的,通过对req.url的判断就可以针对不同路由做不同的事情.
Tip:res.end() 只能触发一次 ; res.write() 可触发多次


================== Express框架写法 ====================
* 在express框架中实现路由,依赖于express构造出来的对象的use方法,示例代码如下:
思路1:

Step1: 创建express服务,构造一个server对象,并监听端口号
Step2: 使用server.use方法判断路由
Step3: 在回调函数中实现逻辑

// 引入模块
const Express=require("express");
// 创建模块
const server=new Express();
// 判断路由,并处理逻辑 (参数一:"请求路由"',参数二:"处理函数")
server.use('/sucai',(req,res,next)=>{
    res.write('素菜:萝卜')
	console.log('吃萝卜')
	next()
})
server.use('/huncai',(req,res,next)=>{
    res.write('荤菜:猪肉')
    console.log('吃白菜')
    next()
})
 // next() 方法调用时则在''素菜''路由执行完便执行"荤菜路由"
})
思路2:

Step1:引入express模块,创建一个express对象
Step2:创建一个router对象,使用router.get或router.post等方法处理路由
Step3:挂载router到express服务上

// 1.引入
const express=require('express');
// 2.构建服务器
const server=new express();
// 3.监听端口
server.listen(2001,()=>{
    console.log('express is ok')
})

// 获取路由中间件
let router=express.Router();
router.get('/login',(req,res)=>{
    res.send('登录界面')
}).get('/register',(req,res)=>{
    res.send('注册页面')
})
//挂载到应用中间件上,也就是服务器
server.use(router);
小拓展:

res.download(’./xxx.txt’) // 下载文件
res.json({}) // 响应json对象
res.jsonp(数据) // 配合jsonp 要求客户端请求的时候也是jsonp的方式, 并且callback=xxx
res.redirect() // 重定向 301是永久重定向, 302临时重定向
res.send() // 发送字符串数据自动加content-type
res.sendFile() // 显示一个文件
res.sendStatus() // 响应状态码

*总结:express框架中使用server.use(路由,函数)或者把路由单独拉出来写在router中,最后挂到服务上的方式.


===================== Koa框架 ========================
* Koa框架中使用路由和express框架中的第二个思路相似,但是挂载方式和处理函数不一样,注意区分.
思路:

Step1:引入koa模块和koa-router模块
Step2:再构建一个router对象调用get或post等方法处理路由
Step3:将router挂载到服务上去
// 路由
const Koa = require(‘koa’)
// 与express 区别 在exrpess中是内置的中间件;使用方式 express.Router
// 在koa2中;路由中间间;属于第三方中间件

// 导入模块(中间件)
const Router  = require('koa-router')

const server= new Koa() 
// 使用第三方中间件
const router  = new Router() 
router.get('/',async(ctx)=>{// 首先这里处理函数变成了异步,用ctx代替了req和res
    // 响应给页面
    ctx.body = '你好我是路由响应的'  // 用ctx.body代替了res传到客户端的内容
})

// 将路由与实例挂钩 (将路由中间挂在到应用中间件上)
// routes() 作用;这个中间会解析http 请求的内容 
// allowedMthodes() 作用:
// 优化状态码的处理405 和501  不再是全部的404
// 405代表请求url有,但是没有写该请求方式的响应
// 501服务器不支持该请求方式
server.use(router.routes(),router.allowedMethods())

server.listen(3000,()=>{
   console.log('koa is ok')
})
*总结: 与express 区别 在exrpess中是内置的中间件,使用方式为express.Router 在koa2中,路由中间件属于第三方中间件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值