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 ...
随机推荐
- 【Educational Codeforces Round 48 (Rated for Div. 2) C】 Vasya And The Mushrooms
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 显然在没有一直往右走然后走到头再往上走一格再往左走到头之前. 肯定是一直在蛇形走位.. 这个蛇形走位的答案贡献可以预处理出来.很容易 ...
- Java基础学习总结(63)——Java集合总结
数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作.Java提供了几个能有效地组织和操作数据的数据结构,这些数据结构通常称为Java集合框架.在平常的学习开发中,灵 ...
- Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a path of "/ezoutdoor".
Could not publish server configuration for Tomcat v7.0 Server at localhost. Multiple Contexts have a ...
- HDU 3507
斜率DP入门题.推荐看看这篇http://www.cnblogs.com/ka200812/archive/2012/08/03/2621345.html 看过之后,自己思考,发现有些不妥之处就是,其 ...
- CommonJS,AMD,RequireJS的差别
RequireJS实现了AMD的API. CommonJS是使用exports对象来定义模块的一种方法,它定义了模块的内容.简单地实现一个CommonJS的定义就像以下这样: // someModul ...
- 使用UE4公布安卓平台游戏
使用了几天的UE4 ,总算是将游戏在安卓平台执行起来了.当中遇到非常多问题,而且终于依旧有一些问题没能解决. 整体感觉是UE4这款引擎眼下还不够成熟.问题较多. 没有unity使用起来方便. 可是既然 ...
- 笔试题&面试题:给定n个数,要求比較次数1.5n同一时候找出最大值和最小值
写出一个算法,对给定的n个数的序列,返回序列中的最大和最小的数. 设计出一个算法,仅仅须要运行1.5n次比較就能找到序列中最大和最小的数吗?是否能再少? 分析:要求比較次数为1.5n,使用一般的逐个遍 ...
- caffe:使用C++来提取任意一张图片的特征
0x00 关于使用C++接口来提取特征,caffe官方提供了一个extract_features.cpp的例程,但是这个文件的输入是blob数据,即使输入层使用的是ImageData,也需要在depl ...
- 利用flashback transaction query新特性进行事务撤销
具备了flashback version query查询的基础,我们就可以进行基于flashback version query的恢复.这就是flashback transaction query.f ...
- c++ std
高中只是听说过stl,每次问老师老师都会说“有毒,千万别学”,于是stl有毒的言论深深的印在我脑海,看到就恐惧,于是一直没有学,但是大学后确实很多用到stl的地方必须去学习了. 现在想想老师当年的说法 ...