国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

Koa項目搭建過程詳細記錄

2019-11-19 14:01:46
字體:
來源:轉載
供稿:網友

本文介紹了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// 這里一定要用koa2koa2 /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 configconst 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,不然會無效

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 阳城县| 确山县| 德化县| 温宿县| 湾仔区| 抚宁县| 屏东县| 加查县| 长沙市| 通城县| 精河县| 原平市| 邵阳县| 万州区| 华亭县| 和平区| 庄河市| 堆龙德庆县| 沂源县| 运城市| 临夏市| 吉安县| 南皮县| 南宁市| 建瓯市| 白河县| 寿光市| 杭锦后旗| 吉木萨尔县| 浦北县| 金湖县| 万载县| 犍为县| 江孜县| 梓潼县| 六盘水市| 寿光市| 神木县| 宝山区| 麟游县| 霍山县|