2、Koa2 路由+cookie
一、koa2 原生路由的实现
const Koa = require('koa');
const app = new Koa();
const fs = require('fs'); function render(page){
let pageUrl = `./page/${page}`
return new Promise((resolve,reject)=>{
//通过fs 函数的方法 来进行 数据 传输
fs.readFile(pageUrl,'binary',(err,data)=>{
console.log(data)
if(err){
reject(err)
}else{
resolve(data)
}
})
})
} async function router(url){
let page = "404.html";
switch(url){
case '/':
page = 'index.html'
break;
case '/index':
page = 'index.html';
break;
case '/todo':
page = 'todo.html';
break;
case '/404':
page = '404.html';
break;
default:
break;
}
//通过浏览器地址栏的参数来判断到底想要使用哪一个页面,相当于一个标识符,传给另一个函数生成一个Promise 传输页面数据,形成路由
let html = render(page)
return html
} app.use(async(ctx)=>{
let url = ctx.request.url;
//调用router函数 来进行路由跳转
ctx.body = await router(url)
}) app.listen(3000,()=>{
console.log("OK")
})
二、Koa-router 中间件
安装:npm i --save koa-router
const Koa = require('koa');
const Router = require('koa-router'); const app = new Koa();
const router = new Router(); //使用Koa-router 组件的方法来进行路由操作。
router.get('/',function(ctx,next){
ctx.body = "aaaaaaaaa"
})
.get('/todo',function(ctx,next){
ctx.body = "todo"
}) //注册 koa-router组件
app.use(router.routes()).use(router.allowedMethods()) app.listen(3000,()=>{
console.log("OK,3000")
})
三、设置层级
1、====设置全部的层级,有时候我们想把路由加入一个级别,比如 http://localhost:3000/page/a 在原来a的前面添加page=====
const Koa = require('koa');
const Router = require('koa-router');
const app = new Koa();
const router = new Router(); let home = new Router();
home.get('/a',async(ctx,next)=>{
ctx.body = 'home aaaaaa'
}).get('/b',async(ctx,next)=>{
ctx.body = "home bbbbbb"
}) let page = new Router();
page.get('/a',async(ctx,next)=>{
ctx.body = ctx.query
}).get('/b',async(ctx,next)=>{
ctx.body = "page bbbbbb"
}) //加载所有的子路由
//第一个参数是子路由的名称,后面2个分别是装载
router.use('/home',home.routes(),home.allowedMethods());
router.use('/page',page.routes(),page.allowedMethods()); //加载路由中间件
app.use(router.routes()).use(router.allowedMethods()); app.listen(3000,()=>{
console.log("OK,3000")
})
给所有的路由添加前置的地址:
const Koa = require('koa');
const Router = require('koa-router'); const app = new Koa();
//在各级的路由前面都加上一个层级
const router = new Router({
prefix:'/cx'
}); router.get('/todo',function(ctx,next){
ctx.body = "todo"
}) app.use(router.routes()).use(router.allowedMethods()); app.listen(3000,()=>{
console.log("OK,3000")
})
四,设置cookie 取cookie
const Koa = require('koa');
const app = new Koa();
const path = require('path');
const views = require('koa-views'); //加载模板引擎
//'./view' 是文件夹的路径,也就是模板所在的位置
app.use(views(path.join(__dirname,'./view'),{
extension:'ejs'
})) //调用模板引擎
app.use(async(ctx)=>{
let title = "hello Koa2"
//通过ctx.render调用的方法模板,index是模板的名称,title是传递的东西
await ctx.render('index',{
title
})
}) app.listen(3000,()=>{
console.log("OK,3000")
})
2、Koa2 路由+cookie的更多相关文章
- koa2 中 cookie 存在的中文问题
koa2 中的 cookie 没办法直接设置中文,会报错 ‘ argument value is invalid ’ 解决办法: 先将它转成 ‘ base64 ’ 编码来存储 new Buffer( ...
- koa2路由
注意:必须导出 文档地址:https://npm.taobao.org/package/koa-router 例: const router = require('koa-router')() rou ...
- koa2入门--02.koa2路由
首先输入在项目文件下使用cmd,输入 npm install koa-router --save const koa = require('koa');//引入koa const Router = r ...
- koa2使用&&中间件&&angular2的koa托管
文章导航 1,koa2使用: 2,写中间件: 3,koa2路由配置angular2; 一.先上代码,一篇,看完koa2中大多基础方法: const Koa=require('koa'); const ...
- koa2实现登录注册功能(ejs+mongodb版)
gtihub仓库地址:(由于国内处于敏感时期,github暂时无法访问) 主要使用的中间件: "ejs": "^2.7.1",(渲染模板) "koa& ...
- 《前端之路》--- 重温 Koa2
目录 一.简单介绍 二. 路由 三.请求数据 四. 静态资源加载 五. 静态资源加载 六. koa2加载模板引擎 七. koa2 中简单使用 mysql 数据库 八. koa2 中使用单元检测 九. ...
- koa2 的使用方法:(一)
1. koa2 使用方法: 安装指令是: npm install koa2 使用koa2 创建项目工程: 1. koa2 (项目工程) 2. 进入项目工程: cd 进入您所创建的项目工程 3. npm ...
- 基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册
项目地址:https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register 通过 vue-cli3.0 + ...
- ⑥SpringCloud 实战:引入gateway组件,开启网关路由功能
这是SpringCloud实战系列中第4篇文章,了解前面第两篇文章更有助于更好理解本文内容: ①SpringCloud 实战:引入Eureka组件,完善服务治理 ②SpringCloud 实战:引入F ...
随机推荐
- 使用maven服务器插件 运行项目
使用jetty插件 部署运行 创建一个maven项目:去Maven仓库中寻找jetty插件 然后复制到pom.xml中 使用命令 运行程序: 然后控制台打印: 通过浏览器 访问: ----- ...
- 设置utf8编码问题
注意:乱码和request的具体实现类有关,现在已经查到的是RequestDispatcher.forward调用前使用的是org.apache.catalina.connector.RequestF ...
- POJ 2018
又一水,设dp[i]为以i结尾的有最大平均值的起始位置. #include <iostream> #include <cstdio> #include <cstring& ...
- git-osc自己定义控件之:CircleImageView
git-osc自己定义控件之:CircleImageView 一.CircleImageView的使用 在项目中能够发现,用户的头像都是圆形的.感觉非常好奇,昨天最终发现了,原来是自定了一个Image ...
- springMVC3.0(文件上传,@RequestMapping加參数,@SessionAttributes,@ModelAttribute,转发,重定向,数值获取,传參,ajax,拦截器)
1.项目包结构例如以下: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsiz ...
- 微软ASP.NET网站部署指南(9):部署数据库更新
1. 综述 无论什么时候,程序都有可能像代码更新一样更新数据库.本章节你将进行数据库改动,測试.然后部署到測试环境和生产环境. 提醒:假设依据本章节所做的操作出现错误信息或一些功能不正常的话,请务必 ...
- 希尔加密算法(湖南师范大学第六届大学生计算机程序设计竞赛)hnuoj11552
解密 Time Limit: 1000ms, Special Time Limit:2500ms, Memory Limit:65536KB Total submit users: 2, Accept ...
- caffe—ssd安装教程
环境: ubuntu16.04 cuda8.0 cudnn5.0 已安装过caffe1.0 tensorflow1.2 编辑过程中出现问题尽量到这里面搜一下:https://github.com/BV ...
- 0x15 KMP
这个算法本身就不难. poj1961 #include<cstdio> #include<iostream> #include<cstring> #include& ...
- Oracle 位图索引
内容简介: 1.位图索引 1.1位图索引使用注意事项; 1.2 使用位图索引; 1.3 位图索引对DML操作的影响; 2.位图连接索引 2.1 明确需求后使用位图索引; 2.1创建位图连接索引的注意事 ...