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 - 如何引入js代码
Mar 09 Javascript
javascript实现文本域写入字符时限定字数
Feb 12 Javascript
js实现使用鼠标拖拽切换图片的方法
May 04 Javascript
javascript随机显示背景图片的方法
Jun 18 Javascript
Node.js + Redis Sorted Set实现任务队列
Sep 19 Javascript
Jquery UI实现一次拖拽多个选中的元素操作
Dec 01 Javascript
JS实现图片上传预览功能
Nov 21 Javascript
bootstrap配合Masonry插件实现瀑布式布局
Jan 18 Javascript
简单实现bootstrap选项卡效果
Feb 08 Javascript
jQuery复合事件用法示例
Jun 10 jQuery
vue 录制视频并压缩视频文件的方法
Jul 27 Javascript
vue-router 中 meta的用法详解
Nov 01 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速成大法
2015/01/30 PHP
JS获取scrollHeight问题想到的标准问题
2007/05/27 Javascript
跟我一起学写jQuery插件开发方法(附完整实例及下载)
2010/04/01 Javascript
让你的博客飘雪花超出屏幕依然看得见
2013/01/04 Javascript
js中substring和substr的详细介绍与用法
2013/08/29 Javascript
一个JavaScript操作元素定位元素的实例
2014/10/29 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
javascript实现五星评价代码(源码下载)
2015/08/11 Javascript
vue2 前后端分离项目ajax跨域session问题解决方法
2017/04/27 Javascript
微信小程序自动客服功能
2017/11/02 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
js对象数组和对象的使用实例详解
2019/08/27 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
[02:16]卖萌的僵尸 DOTA2神话信使飞僵小宝来袭
2014/03/24 DOTA
Python标准库之随机数 (math包、random包)介绍
2014/11/25 Python
Python的shutil模块中文件的复制操作函数详解
2016/07/05 Python
Python2实现的LED大数字显示效果示例
2017/09/04 Python
Python+Django搭建自己的blog网站
2018/03/13 Python
Django中使用Celery的方法示例
2018/11/29 Python
python 使用matplotlib 实现从文件中读取x,y坐标的可视化方法
2019/07/04 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
python 实现识别图片上的数字
2019/07/30 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
全球最大的中文旅行网站:去哪儿网
2017/11/16 全球购物
含精油的天然有机化妆品:Indemne
2019/08/27 全球购物
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
How to spawning asynchronous work in J2EE
2016/08/29 面试题
工程师求职简历的自我评价分享
2013/10/10 职场文书
党员思想汇报范文
2013/12/30 职场文书
国家助学金获奖感言
2014/01/31 职场文书
校庆活动方案
2014/03/31 职场文书
优秀学生党员先进事迹材料
2014/05/29 职场文书
质量主管工作职责
2014/09/26 职场文书
团支部组织委员竞选稿
2015/11/21 职场文书
《揠苗助长》教学反思
2016/02/20 职场文书