当前位置: 首页 > 后端技术 > Node.js

Koa项目基本要点

时间:2023-04-04 00:50:29 Node.js

SpringMVC加上Java中的MyBatis,基本已经成为JavaWeb的标配。与NodeJS对应的有Koa、Express、Mongoose、Sequelize等,Koa在一定程度上可以说是Express的升级版。许多NodeJS项目已经开始使用非关系数据库(MongoDB)。Sequelize支持非关系数据库(MSSQL、MYSQL、SQLLite)。koa项目搭建cnpminstall-gkoa-generator//koa2koa2/fooKoacommonmiddleware这里一定要用到。koa-generator生成的应用已经包含了常用的中间件。这里我们只说不用。koa-lessapp.use(require('koa-less')(__dirname+'/public'))必须在static之前使用,否则无效。在stylesheets文件夹下新建一个styles.less,导入所有的modularless文件。@import'foo.less';@import'bar.less';这样所有的样式都会被编译成一个style.css。只需参考模板(pug)中的style.css。koa-session//设置应用密钥,session将根据这个app.keys=['somesecrethurr'];//配置sessionconfigconstCONFIG={key:'bougie:session',/**(string)cookiekey(defaultiskoa:sess)*/maxAge:1000*60*60*24*7,overwrite:true,/**(boolean)是否可以覆盖(defaulttrue)*/httpOnly:true,/**(boolean)httpOnlyornot(defaulttrue)*/signed:true,/**(boolean)signedornot(defaulttrue)*/rolling:true,/**(boolean)强制设置会话标识符cookie每一个回应。过期重置为原来的maxAge,重置过期倒计时。(默认为false)*/renew:false,/**(boolean)在会话即将过期时更新会话,因此我们可以始终保持用户登录状态。(默认为false)*/};//应用程序中间件app.use(会话(配置,应用程序));这个必须在router之前使用,否则无效。基本使用,可以看成一个普通对象//assignctx.session.statu=value//取值ctx.session.statu//deletectx.session.statu=nullkoa-proxies用于代理配置constproxy=require('koa-proxies')app.use(proxy('/octocat',{target:'https://api.github.com/users',changeOrigin:true,agent:newhttpsProxyAgent('http://1.2.3.4:88'),重写:path=>path.replace(/^\/octocat(\/|\/\w+)?$/,'/vagusx'),logs:true}))路由control开发这里主要关注路由Control,包括restful接口和模板渲染get参数(request)查询参数(?param=a)ctx.query.param路由参数(/:id)ctx.params.idPOST参数(JSON或形式)ctx.request.body请求响应(response)服务端响应客户端的数据。restfulctx.body=yourDataTemplate渲染默认从views目录开始,不允许文件后缀。userAuth=(ctx,next)=>{letisLogin=ctx.session.isLoginif(isLogin)returnnext()}router.use('/',userAuth)这个操作会包含在路由中,比如"/a","/b"等,需要在子路由前使用,否则无效

猜你喜欢