Koa项目搭建过程详细记录


Posted in Javascript onApril 12, 2018

本文介绍了Koa项目搭建过程详细记录,分享给大家,具体如下:

Koa项目搭建过程详细记录

Java中的Spring MVC加MyBatis基本上已成为Java Web的标配。Node JS上对应的有Koa、Express、Mongoose、Sequelize等。Koa一定程度上可以说是Express的升级版。许多Node JS项目已开始使用非关系型数据库(MongoDB)。Sequelize对非关系型数据库(MSSQL、MYSQL、SQLLite)做了支持。

Koa项目构建

cnpm install -g koa-generator

// 这里一定要用koa2
koa2 /foo

Koa常用中间件介绍

koa-generator生成的应用已经包含常用中间件了,这里仅说它里面没有用到的。

koa-less

app.use(require('koa-less')(__dirname + '/public'))

必须在static前use,不然会无效。

stylesheets文件夹下新建styles.less,并引入所有模块化less文件。

@import 'foo.less';
@import 'bar.less';

这样所有的样式会被编译成一个style.css。在模板(pug)中引用style.css就行了。

koa-session

// 设置app keys,session会根据这个进行加密
app.keys = ['some secret hurr'];
// 配置session config
const CONFIG = {
  key: 'bougie:session',
  /** (string) cookie key (default is koa:sess) */
  maxAge: 1000 * 60 * 60 * 24 * 7,
  overwrite: true,
  /** (boolean) can overwrite or not (default true) */
  httpOnly: true,
  /** (boolean) httpOnly or not (default true) */
  signed: true,
  /** (boolean) signed or not (default true) */
  rolling: true,
  /** (boolean) Force a session identifier cookie to be set on every response. The expiration is reset to the original maxAge, resetting the expiration countdown. (default is false) */
  renew: false,
  /** (boolean) renew session when session is nearly expired, so we can always keep user logged in. (default is false)*/
};

// 应用中间件
app.use(session(CONFIG, app));

这个必须在router前use,不然会无效。

基本使用,可以当成一个普通对象

// 赋值
ctx.session.statu = value
// 取值
ctx.session.statu
// 删除
ctx.session.statu = null

koa-proxies

用于代理配置

const proxy = require('koa-proxies')
app.use(proxy('/octocat', {
  target: 'https://api.github.com/users',  
  changeOrigin: true,
  agent: new httpsProxyAgent('http://1.2.3.4:88'),
  rewrite: path => path.replace(/^\/octocat(\/|\/\w+)?$/, '/vagusx'),
  logs: true
}))

路由控制

开发主要集中在路由控制这里,包括restful接口和模板渲染

获取参数(request)

查询参数(?param=a)

ctx.query.param

路由参数(/:id)

ctx.params.id

POST参数(JSON或Form)

ctx.request.body

请求回应(response)

服务器响应给客户端的数据

restful

ctx.body = yourData

模板渲染

默认从views目录开始,不许加文件后缀

ctx.render('layout', yourData)

路由拦截

未登录时拒绝请求,这样会返回404

const userAuth = (ctx, next) => {
  let isLogin = ctx.session.isLogin
  if(isLogin) return next()
}
router.use('/', userAuth)

此操作会包含在路由,如"/a"、"/b"等,需在子路由之前use,不然会无效

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript MD4
Dec 20 Javascript
Visual Studio中的jQuery智能提示设置方法
Mar 27 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
Feb 06 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
Jul 01 Javascript
屏蔽script注入小例子
Nov 12 Javascript
JavaScript学习总结之JS、AJAX应用
Jan 29 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
js屏蔽退格键(backspace或者叫后退键与F5)
Feb 10 Javascript
ES6模板字符串和标签模板的应用实例分析
Jun 25 Javascript
JS sort方法基于数组对象属性值排序
Jul 10 Javascript
React props和state属性的具体使用方法
Apr 12 #Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 #Javascript
关于vue中 $emit的用法详解
Apr 12 #Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 #Javascript
JS中promise化微信小程序api
Apr 12 #Javascript
vue配置请求本地json数据的方法
Apr 11 #Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 #jQuery
You might like
php设计模式 Interpreter(解释器模式)
2011/06/26 PHP
php实现统计网站在线人数的方法
2015/05/12 PHP
php+js实现的无刷新下载文件功能示例
2019/08/23 PHP
jQuery之折叠面板的深入解析
2013/06/19 Javascript
jQuery怎么解析Json字符串(Json格式/Json对象)
2013/08/09 Javascript
document节点对象的获取方式示例介绍
2013/12/24 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
js实现点击向下展开的下拉菜单效果代码
2015/09/01 Javascript
jquery实现九宫格大转盘抽奖
2015/11/13 Javascript
JavaScript基础篇(6)之函数表达式闭包
2015/12/11 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
jquery实现下拉框多选方法介绍
2017/01/03 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
[34:27]DOTA2上海特级锦标赛B组败者赛 VG VS Spirit第一局
2016/02/26 DOTA
[01:22]DOTA2神秘商店携大量周边降临完美大师赛
2017/11/07 DOTA
[01:06:19]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第二场 1月8日
2021/03/11 DOTA
Python连接数据库学习之DB-API详解
2017/02/07 Python
Anaconda多环境多版本python配置操作方法
2017/09/12 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
Python urllib2运行过程原理解析
2020/06/04 Python
Idea安装python显示无SDK问题解决方案
2020/08/12 Python
HTML5 实现一个访问本地文件的实例
2012/12/13 HTML / CSS
html5中嵌入视频自动播放的问题解决
2020/05/25 HTML / CSS
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
怎样写好自我评价呢?
2014/02/16 职场文书
公司授权委托书范本
2014/04/03 职场文书
合同权益转让协议书模板
2014/11/18 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
2015年环境监察工作总结
2015/07/23 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Win10 heic文件怎么打开 ? Win10 heic文件打开教程
2022/04/06 数码科技
nginx日志格式分析和修改
2022/04/28 Servers