koa2 的使用方法:(一)
1. koa2 使用方法:
安装指令是: npm install koa2
使用koa2 创建项目工程:
1. koa2 (项目工程)
2. 进入项目工程: cd 进入您所创建的项目工程
3. npm install // 安装项目依赖;
4. npm start // 启动项目
2. async 和 await:
async (异步)
async function test (){
return 'Hello async'
}
const result = test()
console.log(result)await (等待)
/**
* await 等待async方法执完毕;
* 注释: await 必须在async方法中可以使用因为await访问本身就会造成程序堵塞:
**/
function getDate(){
return 'xixihehe';
}
async function testAsync(){
return "Hello async"
}
async function test(){
const va = await getDate()
const vb = await testAsync()
console.log(va, vb)
}
test();await 和 async同时使用:
function Date (){
return new Promise (resolve=>{
setTimeoit(()=>resolve('log_time_value'),10000)
})
}
async function test(){
const v = await Date()
console.log(v)
}
test()
3. koa2 路由 :
koa2 使用路由必须要安装模块:
// 安装路由的命令提示框的指令是:
npm install --save koa-router
//==================================================
const koa = require("koa")
//引入路由
const router = require("koa-router")
const app = new Date()
router.get('/',(ctx,next)=>{
ctx.body='Hello koa'
})
router.get('/news',(cty,next)=>{
cty.body='新路由'
})
//启动路由;
app.use(router.routes())
//作用: 可以看到router,allowedMethods()用在了路由匹配router.routeres()之后,所以在但所有路由中间最后调用,此时根据ctx,status,设置,response 相应头
app.use(router.allowedMethods())
app.listen(3000,(err)=>{
if(!err){
console.log("SERVER CREATE SCCESS! ")
}
})
get 路由传值:
const koa = require("koa")
const Router = require("koa-router")
const app = new koa()
const router = new router()
router.get('/',(ctx,next)=>{
ctx.bocy ='Hellp koa'
})
router.get('/users',(ctx,next)=>{
let url = ctx.url;
//从requset中获取get请求
let req_query = request.query
let req_quertString = request.queryString;
//从上下文直接获取
let ctx_query = ctx.query;
let ctx_queryString = ctx.queryString;
crx.body={
url,
req.query,
req_queryString,
ctx.query,
ctx.queryString,
}
})
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(3000,(err)=>{
if(!err){
console.log("SERVER CREATE SCCESS! ")
}
})koa动态添加路由
// 请求方式: http:// 域名/ user/123
router.get('/users/:aid',async(ctx)=>{
console,log(ctx.mparams)// {aid:"123"} //获取动态路由的数据
ctx.body='商品页面';
})
4. 中间件:
应用级中间件:
const koa = require('koa')
const Router = require('koa-router')
const app = new koa();
const router = new Router()
app.use(async(ctx,next)=>{
console.log(new Date())
awaait next()
})
router.get('/',(ctx,next)=>{
ctx.body='Hello koa'
})
router.get("/users",(ctx,next)=>{
ctx.body='路由'
})
app.use(router.routes())
app.use(router.allowedMethods())
app.listen(3000,(err)=>{
if(!err){
console.log("SERVER CREATE SCCESS! ")
}
})
2.路由中间件:
router.get('/',(ctx,next)=>{
console.log(1)
next();
})
router.get('/',(ctx)=>{
ctx.body='Hello koa'
})3.错误处理中间件:
app.use(async,(ctx,next)=>{
next();
if(ctx,status==404){
ctx.sttaus=404;
ctx.body='错误页面!'
}
})
第三放中间件
const static = require("koa-static")
const staticPath = './static';
app.use(static{
path.join(_dirname,staticPah)
})
const bodyParser = require("koa-bodyparser");
app.use(bodyParser)koa-bodyparser 中间件:
安装 koa-bodyParser 模块的指令是: npm install --save koa-bodyParser
安装koa-bodyparser 引入配置中间件
var koa = require('koa')
var bodparser = require('koa-bodyparser')
var app = new koa()
app.use(bodyparser())
app.use(async ctx=>{
ctx.body= ctx.request.body
})koa-static 静态资源 中间件
安装 koa-static的指令是:
npm install --save koa-static
引入配置文件:
const static = require('koa-static')
app.use(static(path.join(_dirname).'public'))
5. Session koa-session的使用
session 和 cookie 的区别:
session是一种记录客户状态的机制,和cookie不同发是,cookie 是保存在客户端的浏览器中,而 session是保存在服务器上的,
安装指令是:
npm install koa-session --save
// 引入session
const session = requure('koa-session')
// 设置中间件
app.keys = ['some secret hurr'];
const CONFIG = {
key: 'koa:sess', //cookie key (default is koa:sess)
maxAge: 86400000, // cookie的过期时间 maxAge in ms (default is 1 days)
overwrite: true, //是否可以overwrite (默认default true)
httpOnly: true, //cookie是否只有服务器端可以访问 httpOnly or not (default true)
signed: true, //签名默认true
rolling: false, //在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false)
renew: false, //(boolean) renew session when session is nearly expired,
};
app.use(session(CONFIG, app));
// 使用
设置值 ctx.session.username = '柚子小哥哥!';
获取值 ctx.session.username
6. ejs:
安装 koa-views 和 ejs
安装 koa-views :
npm install --save koa-views
安装ejs :
npm install ejs --save
引入koa-views 胚珠中间件
const views = require('koa-views')
app.use(views('views',{map:{html:'ejs'}}))使用ejs
router.get('/add',async(ctx){
let title = 'hello koa2'
await ctx.render(index',{
title
{}
koa2 的使用方法:(一)的更多相关文章
- javaSE27天复习总结
JAVA学习总结 2 第一天 2 1:计算机概述(了解) 2 (1)计算机 2 (2)计算机硬件 2 (3)计算机软件 2 (4)软件开发(理解) 2 (5) ...
- uni-app开发的应用(小程序,app,web等),使用Node+Koa2开发的后端程序接收上传文件的方法
uni-app使用使用Node+Koa2开发的后端程序接收上传的文件 通过gitbook浏览此随笔 通过其它客户端上传(h5,小程序等),接收方法一致 使用koa接收时,我们需安装一个中间件koa-b ...
- koa2 use里面的next到底是什么
koa2短小精悍,女人不爱男人爱. 之前一只有用koa写一点小程序,自认为还吼吼哈,知道有一天某人问我,你说一下 koa或者express中间件的实现原理.然后我就支支吾吾,好久吃饭都不香. 那么了解 ...
- koa2 controller中实现类似sleep的延迟功能
今天有同事问我如何在koa2中的controller中使用延迟执行的功能,他直接在controller中使用setTimeout,但是没效果. 错误的代码类似下面这样: // 错误的方法 export ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- koa2教程(一)-快速开始
来自Koa官网对于Koa的简介: koa 是由 Express 原班人马打造的,致力于成为一个更小.更富有表现力.更健壮的 Web 框架. 使用 koa 编写 web 应用,通过组合不同的 async ...
- vue2.0+koa2+mongodb实现注册登录
前言 前段时间和公司一个由技术转产品的同事探讨他的职业道路,对我说了一句深以为然的话: "不要把自己禁锢在某一个领域,技术到产品的转变,首先就是思维上的转变.你一直做前端,数据的交互你只知道 ...
- [转]Node.js 应用:Koa2 使用 JWT 进行鉴权
本文转自:https://www.cnblogs.com/linxin/p/9491342.html 前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行 ...
- Node.js 应用:Koa2 使用 JWT 进行鉴权
前言 在前后端分离的开发中,通过 Restful API 进行数据交互时,如果没有对 API 进行保护,那么别人就可以很容易地获取并调用这些 API 进行操作.那么服务器端要如何进行鉴权呢? Json ...
随机推荐
- [COCOS2DX-LUA]0-002.在C++中如何接收Lua方法,然后tolua
用过COCOS2DX-LUA的同学们,大家都知道回调函数这个东西,在Lua中,我们可以把一个方法当成是一个参数传递给另一个方法,然后在方法中进行调用.但是我们经常要写C++代码,然后再转成Lua,那么 ...
- [Objective-C] 014_Objective-C 代码规范指南
本文参考引用(http://www.csdn.net/article/2015-06-01/2824818-objective-c-style-guide/1) 拥有良好的编码规范,能使我们的代码保持 ...
- Pycharm虚拟环境的使用
Pycharm虚拟环境的使用 pycharm创建项目的时候,一定勾选inhert global site-packages.不然系统的库就没法用了. 打开Project Interpreters页面: ...
- Linux suid 提权
SUID (Set owner User ID up on execution) 是给予文件的一个特殊类型的文件权限.在 Linux/Unix中,当一个程序运行的时候, 程序将从登录用户处继承权限.S ...
- spring boot 整合 poi 导出excel
一. 第一种方式 1.首先从中央仓库中导入架包Poi3.14以及Poi-ooxml3.14. <dependency> <groupId>org.apache.poi</ ...
- Java获取当前时间到凌晨12点剩余秒数
有个获取登陆用户是否每天第一次登陆系统需求,考虑不需要入库操作,就用redis设置key每天凌晨0点删除 /** * 获取当前时间到凌晨12点的秒数 * @return */ public Long ...
- 2003 can't connect to mysql server
在电脑中打开 计算机管理 点击 服务与应用程序 点击 服务 右侧找到 mysql 右键启动
- Java实现 LeetCode 715 Range 模块(选范围)
715. Range 模块 Range 模块是跟踪数字范围的模块.你的任务是以一种有效的方式设计和实现以下接口. addRange(int left, int right) 添加半开区间 [left, ...
- Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)
521. 最长特殊序列 Ⅰ 给定两个字符串,你需要从这两个字符串中找出最长的特殊序列.最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列). 子序列可以通过删去字符串中 ...
- Java实现 LeetCode 491递增子序列
491. 递增子序列 给定一个整型数组, 你的任务是找到所有该数组的递增子序列,递增子序列的长度至少是2. 示例: 输入: [4, 6, 7, 7] 输出: [[4, 6], [4, 7], [4, ...