|
@@ -0,0 +1,77 @@
|
|
|
+<!--
|
|
|
+ * @Author: your name
|
|
|
+ * @Date: 2021-08-19 14:56:43
|
|
|
+ * @LastEditTime: 2021-08-20 11:26:06
|
|
|
+ * @LastEditors: Please set LastEditors
|
|
|
+ * @Description: In User Settings Edit
|
|
|
+ * @FilePath: \md-\koa\koa使用技巧.md
|
|
|
+-->
|
|
|
+# koa使用技巧
|
|
|
+## koa路由相关
|
|
|
+### 使用koa来手动实现路由
|
|
|
+#### 不想写,太麻烦
|
|
|
+### 使用`koa-router`模块进行路由处理
|
|
|
+1. **安装`koa-router`**
|
|
|
+ <!-- tabs:start -->
|
|
|
+#### **npm**
|
|
|
+```shell
|
|
|
+npm i koa-router --save
|
|
|
+```
|
|
|
+#### **yarn**
|
|
|
+```shell
|
|
|
+yarn add koa-router
|
|
|
+```
|
|
|
+<!-- tabs:end -->
|
|
|
+2. **使用`koa-router`**
|
|
|
+ 首先导入`koa-router`,然后实例化`koa-router`,实例化时可以传入参数[`option`]类型为`Object`,`option`可以去[githob仓库](https://github.com/ZijianHe/koa-router)进行查询。
|
|
|
+ 其中 `option.prefix` 为路由前缀
|
|
|
+ 在根目录下的`app.js`文件中写入下面代码块内容.
|
|
|
+ ```js
|
|
|
+ const Koa = require('koa')
|
|
|
+ const Router = require('koa-router')
|
|
|
+
|
|
|
+ const app = new Koa()
|
|
|
+ const router = new Router()
|
|
|
+
|
|
|
+ router.get('/',async ctx=>{
|
|
|
+ ctx.body = 'Hello World'
|
|
|
+ })
|
|
|
+
|
|
|
+ app.use(router.routes()).use(router.allowedMethods())
|
|
|
+ app.listen(3000)
|
|
|
+
|
|
|
+ ```
|
|
|
+ 编辑完`app.js`后,在终端中用`node`来运行服务.
|
|
|
+ ```shell
|
|
|
+ node app.js
|
|
|
+ ```
|
|
|
+ > [!tip]
|
|
|
+ > 在浏览器中访问 [http://localhost:3000](http://localhost:3000) 可以看见一个`hello World` ,表示路由使用成功
|
|
|
+
|
|
|
+ **使用路由前缀**
|
|
|
+ `koa-router`中设置路由前缀,比如用户模块下的路由为`/home/xx`形式.可以通过路由前缀来分模块写路由
|
|
|
+ 在`koa-router`中路由前缀在实例化路由时用参数 `prefix`来进行设置
|
|
|
+ 编辑`app.js`文件
|
|
|
+ ```js
|
|
|
+ const Koa = require('koa')
|
|
|
+ const Router = require('koa-router')
|
|
|
+
|
|
|
+ const app = new Koa()
|
|
|
+ // 传入option,设置prefix的值为home
|
|
|
+ const router = new Router({
|
|
|
+ prefix: '/home'
|
|
|
+ })
|
|
|
+
|
|
|
+ router.get('/',async ctx=>{
|
|
|
+ ctx.body = 'welcome to my home'
|
|
|
+ })
|
|
|
+ router.get('/question',async ctx=>{
|
|
|
+ ctx.body = '没人在家'
|
|
|
+ })
|
|
|
+
|
|
|
+ app.use(router.routes()).use(router.allowedMethods())
|
|
|
+ app.listen(3000)
|
|
|
+ ```
|
|
|
+ 重新运行`app.js`
|
|
|
+ > [!tip]
|
|
|
+ > 在浏览器中访问 [http://localhost:3000/home/question](http://localhost:3000/home/question) 可以看见一个`没人在家`,表示路由前缀设置成功
|