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 相关文章推荐
JQuery 表格操作(交替显示、拖动表格行、选择行等)
Jul 29 Javascript
一起来写段JS drag拖动代码
Dec 09 Javascript
jQuery内部原理和实现方式浅析
Feb 03 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
AngularJS入门教程之MVC架构实例分析
Nov 01 Javascript
jQuery中的siblings()是什么意思(推荐)
Dec 29 Javascript
微信小程序商品到详情的实现
Jun 27 Javascript
webpack项目调试以及独立打包配置文件的方法
Feb 28 Javascript
JS数组扁平化、去重、排序操作实例详解
Feb 24 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
Nov 17 Javascript
JavaScript实现10秒后再次获取验证码
Dec 02 Javascript
Vue实现随机验证码功能
Dec 29 Vue.js
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实现单例模式最安全的做法
2014/06/13 PHP
php使用GD创建保持宽高比缩略图的方法
2015/04/17 PHP
PHP封装的HttpClient类用法实例
2015/06/17 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
2020/06/02 PHP
js中prototype用法详细介绍
2013/11/14 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
2014/12/18 Javascript
jQuery获取DOM节点实例分析(2种方式)
2015/12/15 Javascript
如何提高javascript加载速度
2016/12/26 Javascript
微信小程序实现选项卡功能
2020/06/19 Javascript
详解layui弹窗父子窗口之间传参数的方法
2018/01/16 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
基于html+css+js实现简易计算器代码实例
2020/02/28 Javascript
Vue插槽_特殊特性slot,slot-scope与指令v-slot说明
2020/09/04 Javascript
python进阶教程之动态类型详解
2014/08/30 Python
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
详解Django中的过滤器
2015/07/16 Python
Python3中条件控制、循环与函数的简易教程
2017/11/21 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
在Python中Dataframe通过print输出多行时显示省略号的实例
2018/12/22 Python
python 获取utc时间转化为本地时间的方法
2018/12/31 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
关于阿里云oss获取sts凭证 app直传 python的实例
2019/08/20 Python
python paramiko远程服务器终端操作过程解析
2019/12/14 Python
Python 去除字符串中指定字符串
2020/03/05 Python
python json.dumps中文乱码问题解决
2020/04/01 Python
建筑专业毕业生推荐信
2013/11/21 职场文书
护士自我介绍信
2014/01/13 职场文书
人口与计划生育目标管理责任书
2014/07/29 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
挂职个人工作总结
2015/03/05 职场文书
乡镇团委工作总结2015
2015/05/26 职场文书
请假条应该怎么写?
2019/06/24 职场文书
看古人们是如何赞美老师的?
2019/07/08 职场文书
python unittest单元测试的步骤分析
2021/08/02 Python