[toc]
Koa 框架大概流程操作
npm init
初始化一个 npm 项目cnpm install --save koa
安装 koa 框架,记得保存到 package.jsoncnpm install --save koa-router
安装 koa-router 路由,记得保存到 package.jsoncnpm install --save koa-staic
安装 Koa-staic 静态文件,记得保存到 package.jsonconst Koa = require("koa");
注意:引入 koa 构造函数的时候要大写const router = require("koa-router")();
注意 Koa-router 引入后要直接执行const static = require("koa-static");
const app = new Koa()
app.use(static(__dirname + 存放静态文件的目录))
__dirname 是 node 的全局变量,可以直接获取当前项目的绝对路径router.get( 要编写的页面 ,async (ctx,next)=>{ 这里可以写这个页面要显示什么,可以用模板字符串换行 })
注意要用 async funcion 来进行异步操作app.use(router.routes())
这一步用来引入 koa-routerapp.listen( 端口,()=>{ 这里可以写已开启服务器 })
访问的时候,默认是 80 端口(可以省略),http://127.0.0.1
Koa 框架概述
Koa 是一个基于 Node 的 Web 服务器开发框架,可以更便携地开发 Web 服务器。
安装 Koa
在安装 Koa 之前要先初始化一个项目
新建一个空目录,在该目录中打开命令行工具
1 | npm init |
初始化完成之后,安装 Koa
1 | cnpm install --save koa |
创建服务器
通过 require 引入 Koa,使用 Koa 创建服务器。
1 | const Koa = require("koa"); // 引入Koa构造函数 |
引入的 Koa 是一个构造函数,通过 new 关键字可以创建一个 koa 应用 app。然后通过 app 的 listen 方法设置监听端口,运行这个程序就可以移动一个 koa 服务器了。
访问本机的 3000 端口可以看到not found
,这说明服务器已经正常启动了,但是还没有指定服务器响应的内容。
接下来,我们用 app 的 use 方法设置响应的内容,实例代码如下所示。
1 | const Koa = require("koa"); // 引入Koa构造函数 |
app 的 use 方法可以调用一个函数(中间件),这个函数会在请求和相应之间被调用。函数可以接受两个参数。
- ctx:上下文变量,可以获取请求与响应的相关信息。
- next:处理下一个异步函数。
多个 use 方法
1 | const Koa = require("koa");// 引入Koa构造函数 |
路由 koa-router
浏览器可以使用不同的方法发送请求,常用的方法如下所示:
- get 请求:用来获取页面或数据
- post 请求:用来提交数据,一般登录的时候,想后台发送用户名和密码可以使用。
1 | cnpm install --save koa-router |
1 | const Koa = require("koa");// 引入Koa构造函数 |
静态文件
__dirname node 的全局变量,可以直接获取当前项目的绝对路径。
在网页中插入图片,需要在 img 标签中填写图片的地址。web 应用的服务器,只有静态文件目录的文件才可以被 html 页面直接访问。
也就是说,我们需要先创建一个静态文件目录,然后在里面放置图片(或 js,或 css),才能被 html 页面访问。
通过下面的命令下载koa-static
,可以设置静态文件目录。
1 | cnpm install --save koa-static |
引入koa-static
,可以得到一个 static 函数,通过调用这个 static 函数,便可以将参数的目录设置为一个静态目录了。
这样就可以在网页中看到图片了。
1 | const Koa = require("koa"); // 引入Koa构造函数 |
课后练习
创建一个基于 Koa 的服务器,运行在 80 端口,满足以下需求:
- 访问
http://127.0.0.1
,显示文字欢迎来到首页。 - 访问
http://127.0.0.1/doc
,显示有标题、段落和图片的网页内容。 http://127.0.0.1/doc
页面中的标题和段落文字为蓝色,通过外部样式引入。
1 | /** |
doc.css 文件
1 | h1, p{ |