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 相关文章推荐
客户端静态页面玩分页
Jun 26 Javascript
JAVASCRIPT对象及属性
Feb 13 Javascript
javascript 用记忆函数快速计算递归函数
Mar 15 Javascript
关于页面嵌入swf覆盖div层的问题的解决方法
Feb 11 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
JQuery实现Ajax加载图片的方法
Dec 24 Javascript
关于ES6的六个小特性(二)
Feb 20 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
Jul 12 Javascript
详解在vue-cli3.0中自定css、js和图片的打包路径
Aug 26 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
ant design vue导航菜单与路由配置操作
Oct 28 Javascript
解决vue-router的beforeRouteUpdate不能触发
Apr 14 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 动态添加记录
2009/03/10 PHP
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
用JavaScript脚本实现Web页面信息交互
2006/12/21 Javascript
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
防止xss和sql注入:JS特殊字符过滤正则
2013/04/18 Javascript
Event altKey,ctrlKey,shiftKey属性解析
2013/12/18 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
Node.js+Express配置入门教程详解
2016/05/19 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
Vue表单验证插件Vue Validator使用方法详解
2017/04/07 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
Vue.js tab实现选项卡切换
2017/05/16 Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
2017/11/08 jQuery
JS根据Unix时间戳显示发布时间是多久前【项目实测】
2019/07/10 Javascript
微信小程序实现侧边栏分类
2019/10/21 Javascript
详解Vue的ref特性的使用
2020/01/24 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python爬虫 urllib模块反爬虫机制UA详解
2019/08/20 Python
如何使用selenium和requests组合实现登录页面
2020/02/03 Python
win10从零安装配置pytorch全过程图文详解
2020/05/08 Python
使用Python判断一个文件是否被占用的方法教程
2020/12/16 Python
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
软件测试工程师笔试题带答案
2015/03/27 面试题
群众路线剖析材料怎么写
2014/10/09 职场文书
庭外和解协议书
2016/03/23 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis