Koa框架基础
Koa是一个基于Node的web服务器开发框架,通过Koa我们可以更便捷地开发web服务器。不必像上一节那样刀耕火种地从零开始写。
安装Koa
cnpm install koa --save
用koa创建服务器
const Koa = require("koa");//引入koa构造函数
const { append } = require("koa/lib/response");
const app = new Koa();//创建应用
//use引入一个中间件,中间件可以理解为一个函数,在浏览器发出请求到服务器响应之前生效
app.use(async (ctx) => {//async异步
//ctx:上下文,存储请求的信息,也能设置响应的相关信息
ctx.body = "hello koa"
});
append.listen(3000,() => {
console.log("server is running");
});//设置监听端口
nodemon运行server.js
路由
上面的例子只要有请求都会响应hello koa
但实际开发中要区分不同的页面,如127.0.0.1:3000/123不应该与127.0.0.1:3000的内容一样
可以用路由加以区分
安装koa-router
cnpm install koa-router
声明
const router = require("koa-router")();//引入并执行koa-router
设置路由
const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const router = require("koa-router")();//引入并执行koa-router
router.get("/", async (ctx) => {//"/"表示首页
ctx.body = "home page";
});
router.get("/video", async ctx => {//只有一个参数时括号可省略
ctx.body = "video page";
});
app.use(router.routes());//在koa项目中引入router
app.listen(3000,() => {
console.log("server is running");
});//设置监听端口
nodemon运行
- ctx.body里可以放一些html语言
在首页的body里修改
ctx.body = `
<h1>标题</h1>
<p>这是一个文字</p>
`;
但是不能放一些跟路径相关的html语言,如img、css
静态文件
先下载koa-static模块
cnpm install koa-static
引入
const static = require("koa-static");
实例
const Koa = require("koa");//引入koa构造函数
const app = new Koa();//创建应用
const router = require("koa-router")();//引入并执行koa-router
const static = require("koa-static");
//__dirname可以获取项目的绝对路径
app.use(static(__dirname + "/public"));//设置静态文件目录
router.get("/", async (ctx) => {//"/"表示首页
ctx.body = `
<h1>标题</h1>
<p>这是一个文字</p>
<img src="/images/logo.png">
`;//img的路径默认是静态文件目录开始
});
router.get("/video", async ctx => {//只有一个参数时括号可省略
ctx.body = "video page";
});
app.use(router.routes());//在koa项目中引入router
app.listen(3000,() => {
console.log("server is running");
});//设置监听端口
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?