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");
});//设置监听端口