Node-04KOA框架

1.Koa框架概述

Koa是一个基于Node的web服务器开发框架,利用Koa框架,可以不必从0开始使用node内置的核心模块–http模块,搭建服务器。

2.安装Koa

  • 创建项目
  • 利用npm初始化
npm init
  • 安装Koa
npm install --save koa

3.quick-start

新建server.js文件:

//引入Koa
const Koa = require("koa");
//创建实例
const app = new Koa();
//设置监听窗口
app.listen(3000,()=>{
    
    
	console.log("server is running");
});

在项目中,打开命令行,启动服务器

node server.js
//如果全局安装了nodemon
//推荐
nodemon server.js

但由于服务器没有响应页面的具体内容,所以打开浏览器

http://127.0.0.1:3000

将显示Not Found

4.Koa的hello world

如何在浏览器页面上显示hello world?
使用app的use方法设置响应的内容

app.use(ctx,next);
/*
ctx:上下文变量,获取请求和响应的相关信息
next:处理下一个异步函数
*/

app的use方法将调用一个中间件(函数)
该中间件的调用时机在请求和响应之间

//引入Koa
const Koa = require("koa");
//创建实例
const app = new Koa();

//设置页面响应内容
app.use(async (ctx,next) => {
    
    
    ctx.body = "hello world"
    await next();
})

app.use(async (ctx,next) => {
    
    
    console.log("我是一个中间件")
})

//设置监听窗口
app.listen(3000,()=>{
    
    
	console.log("server is running");
});

5.路由

浏览器可以使用不同的方法发送请求,常用的方法如下

  • get:用于使用给定的URI从给定服务器中检索信息,即从指定资源中请求数据。
  • post:用于将数据发送到服务器以创建或更新资源,比如登录信息
  • del:用来删除指定的资源,它会删除URI给出的目标资源的所有当前内容

这里主要使用get来获取页面
并利用koa-router来指定具体路由

安装koa-router

cnpm install --save koa-router

用法:

扫描二维码关注公众号,回复: 12674031 查看本文章
const Koa = require("koa");
const router =  require("koa-router")();//加括号:引用并执行koa-router(路由所需要的依赖)
const app = new Koa();

router.get("/",async(ctx)=>{
    
    
	//反引号:跨行书写(人类习惯)
    ctx.body = `
            <h1>title</h1>
            <p>this is content</p>
             `
})

router.get("/learn",async ctx =>{
    
    
    ctx.body = "learn page";
})

//让router和app产生关联
app.use(router.routes());//在koa项目中引入router

app.listen(3000,()=>{
    
    
    console.log('server is running')
})

静态路由

理论上,用户只要输入具体的url就能获取web服务器的具体内容,但是,为了安全,我们只想让用户访问到该访问的内容,所以需要设置静态路由,将面向用户的文件放在这里:

  • 安装koa-static依赖
npm install --save koa-static
  • 设置静态路由
const Koa = require("koa");
const router =  require("koa-router")();//引用并执行koa-router(路由所需要的依赖)
const app = new Koa();

//如何创建静态路由
// 引入koa-static依赖
const static = require("koa-static");
//__dirname 可以直接获取当前项目的绝对路径
// console.log("当前项目的绝对路径:"+__dirname);
app.use(static(__dirname+"/public"));//(用户仅能访问该文件夹内的内容,需要本地创建该文件夹)

router.get("/",async(ctx)=>{
    
    
    ctx.body = `
            <h1>title</h1>
            <p>this is content</p>
            <img src = '/image/hello.jpg'>
    `
})

router.get("/learn",async ctx =>{
    
    
    ctx.body = "learn page";
})

//让router和app产生关联
app.use(router.routes());//在koa项目中引入router

app.listen(3000,()=>{
    
    
    console.log('server is running')
})

效果:
static router

猜你喜欢

转载自blog.csdn.net/baidu_41656912/article/details/114167753