koa

使用typescript改造koa开发框架

倾然丶 夕夏残阳落幕 提交于 2020-02-04 14:36:42
原文地址: 使用typescript改造koa开发框架 强类型的 TypeScript 开发体验和维护项目上相比 JavaScript 有着明显的优势,那么对常用的脚手架进行改造也就势在必行了。 接下来开始对基于 koa 框架的 node 后端脚手架进行改造: 项目开发环境 和 typescript 编译环境的搭建; 对 node 、 koa 、koa中间件和使用到的库 添加类型化支持; 基于 typesript 的特性改造项目。 项目开发环境搭建 基于 gulp 搭建开发编译环境, gulp-typescript 插件用于编译 typescript 文件, gulp-nodemon 则可以监控文件内容的变更,自动编译和重启 node 服务,提升开发效率。 npm install -D gulp gulp-nodemon gulp-typescript ts-node typescript gulp 的配置 gulpfile.js 的设置 const { src, dest, watch, series, task } = require('gulp'); const del = require('del'); const ts = require('gulp-typescript'); const nodemon = require('gulp-nodemon'); const

Koa 中 Cookie 的使用

邮差的信 提交于 2020-02-02 09:47:34
Cookie 简介 cookie 是存储于访问者的计算机中的变量。可以让我们用同一个浏览器访问同一个域名的时候共享数据。 HTTP 是无状态协议。简单地说,当你浏览了一个页面,然后转到同一个网站的另一个页 面,服务器无法认识到这是同一个浏览器在访问同一个网站。每一次的访问,都是没有任何 关系的。 Koa Cookie 的使用 1 、 Koa 中设置 Cookie 的值 ctx.cookies.set(name, value, [options]) options 名称 options 值 maxAge 一个数字表示从 Date.now() 得到的毫秒数 expires cookie 过期的 Date path cookie 路径 , 默认是 '/' domain cookie 域名 secure 安全 cookie 默认 false ,设置成 true 表示 只有 https 可以访问 httpOnly 是否只是服务器可访问 cookie, 默认是 true overwrite 一个布尔值,表示是否覆盖以前设置的同名 的 cookie ( 默认是 false). 如果是 true, 在同 一个请求中设置相同名称的所有 Cookie (不 管路径或域)是否在设置此 Cookie 时从 Set-Cookie 标头中过滤掉。 a boolean indicating whether to

Koa Session 的使用

元气小坏坏 提交于 2020-02-02 09:43:05
一、 Session 简单介绍 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。 二、 Session 的工作流程 session 是另一种记录客户状态的机制,不同的是 Cookie 保存在客户端浏览器中,而 session 保存在服务器上。 当浏览器访问服务器并发送第一次请求时,服务器端会创建一个 session 对象,生 成一个类似于 key,value 的键值对, 然后将 key(cookie)返回到浏览器(客户)端,浏览 器下次再访问时,携带 key(cookie),找到对应的 session(value)。 客户的信息都保存 在 session 中 三、 koa-session 的使用 : 1.安装 koa-session npm install koa-session --save 2.引入 koa-session const session = require('koa-session'); 3.设置官方文档提供的中间件 app.keys = ['some secret hurr']; const CONFIG = { key: 'koa:sess', //cookie key (default is koa:sess) maxAge: 86400000, // cookie 的过期时间

koa ejs 模板引擎

不想你离开。 提交于 2020-01-31 10:33:07
Koa 中使用 ejs 模板的使用 1 、安装 koa-views 和 ejs 1. 安装 koa-views npm install --save koa-views / cnpm install --save koa-views 2. 安装 ejs npm install ejs --save / cnpm install ejs --save 2 、引入 koa-views 配置中间件 const views = require('koa-views'); app.use(views('views', { map: {html: 'ejs' }})); 3 、 Koa 中使用 ejs : router.get('/add',async (ctx)=>{ let title = 'hello koa2' await ctx.render(index',{   title   })}) 4、Ejs 引入模板 <%- include header.ejs %> 5、Ejs 绑定数据 <%=h%> 6、Ejs 绑定 html 数据 <%-h%> 7、Ejs 模板判断语句 <% if(true){ %> <div>true</div> <%} else{ %> <div>false</div> <%} %> 8、Ejs 模板中循环数据 <%for(var i=0;i<list

node.js开发API(二)--- 认识Koa-Router和获取参数

拈花ヽ惹草 提交于 2020-01-28 23:51:21
中间件工作原理 上一节文末参考的文章我们可以了解到: 在 koa 实例化之后,我们会使用 use 来加载中间件; 每一个中间件都是一个函数,函数的参数分别是 ctx 和 next ; 建立好http服务器之后, koa-compose 会将中间件存放在一个数组中,并依次从数组中执行每一个函数; 每一个中间函数会调用next方法去取下一个中间件函数继续执行,且每一个中间件都会返回一个 promise 对象。 认识Koa-Router 此时我们无论在浏览器输入什么路径,打印的都是一样的内容,因为使用的是同一个中间件。 http://localhost:3000/loginhttp://localhost:3000/book/gethttp://localhost:3000/book/edit... 修改以下代码: const Koa = require('koa'); const app = new Koa(); ​ app.use(async (ctx,next)=>{ if(ctx.path === '/'){ console.log("主页"); }else if(ctx.path === '/book/edit'){ console.log("编辑书本"); } await next(); }); ​ app.listen(3000); 当访问 http://localhost

koa与node.js开发实践

雨燕双飞 提交于 2020-01-25 08:32:42
koa与node.js开发实践要点 node.js入门 npm koa 基础(在基础视频中补充) koa 的安装与搭建 Context对象 ctx.request get请求 post请求获取参数 ctx.response ctx.state ctx.cookies ctx.throw koa 的中间件洋葱模型 如果将多个中间件组合成一个单一的中便于重用或导出,可以使用koa-compose 常用Koa中间件介绍 koa-bodyparser中间件 koa-router中间件 koa-router 的安装和介绍 restful规范 koa-router 用法 基本用法 all方法设置跨域 await next() 其他特征 命名路由 多中间件 嵌套路由 路由前缀 URL参数 通过koa-router 来实现接口权限控制(JWT) http 完整的url 常用的HTTP状态码 9种http请求方法 常用的HTTP首部字段(待补) querystring模块 querystring模块的使用 引入 第一种方法 escape 对传入的字符串进行编码 第二种方法 unescape对传入的字符串进行解码 第三种方法 parse, 将传入的字符串反序列化为对象 第三种方法 stringify, 将传入的字符串反序列化为对象 koa-router中的querystring 构建koa Web应用

koa and sqlite3 node REST endpoint returning only Database object instead of data

时光总嘲笑我的痴心妄想 提交于 2020-01-16 16:26:08
问题 I have a simple GET route setup with Koa and sql3lite that fetches from a json file some data, with the use of a wrapper. A helper sql3lite wrapper exposes an initialize function for the main server index.js file to load into memory on startup: index.js const data = require('./data'); data.initialize(); const server = createServer(); server.listen(PORT, () => { console.log(`server listening on port ${PORT}`); }); The data.js file serves as a wrapper around the sqlite3 node library, so routes

koa and sqlite3 node REST endpoint returning only Database object instead of data

久未见 提交于 2020-01-16 16:25:20
问题 I have a simple GET route setup with Koa and sql3lite that fetches from a json file some data, with the use of a wrapper. A helper sql3lite wrapper exposes an initialize function for the main server index.js file to load into memory on startup: index.js const data = require('./data'); data.initialize(); const server = createServer(); server.listen(PORT, () => { console.log(`server listening on port ${PORT}`); }); The data.js file serves as a wrapper around the sqlite3 node library, so routes

koa-compose源码解读

ε祈祈猫儿з 提交于 2020-01-14 04:38:26
koa koajs :next generation web framework for node.js。 Koa 是基于 Node.js 的下一代 web 开发框架。它是基于中间件机制的优雅、简洁、表达力强、自由度高的简单好用的 Web 框架。通过将各种独立功能的中间件进行自由组合实现具有特定功能的 web 应用。如通过 koa-router 中间件实现路由功能、通过 koa-cors 实现跨域功能等等。在这些中间件中,有一个中间件比较特殊 koa-compose ,也正是这个中间件的使用才使得在 koa 中有了我们熟知的洋葱模型。 洋葱模型 洋葱模型是 koa 中间件的串行控制流程。 const Koa = require ( 'koa' ) ; const app = new Koa ( ) ; app . use ( async ( ctx , next ) => { console . log ( 'enter first middleware' ) ; await next ( ) ; console . log ( 'out first middleware' ) ; } ) ; app . use ( async ( ctx , next ) => { console . log ( 'enter second middleware' ) ; await next

Context object is empty while receiving POST request , in Koa?

风格不统一 提交于 2020-01-13 07:12:16
问题 I am new in Koa and I am creating a demo app. I want to create an API to handle POST request, But when I console.log(ctx); then there is nothing in ctx in indexRouter.js , the console only printing empty object like {} . I don't know why this is happening. Please anyone suggest me where I am doing wrong? And please help me to get the request.body by POST Method. serverKoa.js: var koa = require('koa'); var router = require('koa-router'); var app = new koa(); var route = router(); //Instantiate