前端全棧必會node框架koa。。。

2021-09-11 13:32:59 字數 4060 閱讀 6080

啥是koa?那個美女好像也叫koa

koa2是現在最流行的基於node.js平台的web開發框架;koa 應用程式是乙個包含一組中介軟體函式的物件,它是按照類似堆疊的方式組織和執行的。

const koa = require('koa');

ctx.body = 'hello world';

}); log.error('server error', err)

});複製**

koa中介軟體以更傳統的方式級聯;那和express的中介軟體有什麼區別呢?

express和koa的區別

let express = require('express');

console.log(1);

await next();

console.log(2);

}); console.log(3);

await new promise((resolve, reject) => , 100);

})await next();

console.log(4);

});// 1 3 2 非同步 4

//遇到非同步不會等待 直接執行;打亂原來的洋蔥模型

複製**

let koa = require('koa');

console.log(1);

await next();

console.log(2)

}); console.log(3);

await new promise((resolve, reject) => , 100);

})await next();

console.log(4)

})// 1 3 非同步 4 2

複製**

koa使用中介軟體獲取請求體

const bodyparser = require('koa-bodyparser');

let body=ctx.request.body;//得到請求體

})複製**

使用中介軟體獲取包含檔案的請求體

const bodyparser = require('koa-better-body');

et convert = require('koa-convert'); // 將1.0的中介軟體 轉化成2.0中介軟體

uploaddir: path.join(__dirname, 'uploads'),

keepextensions: true

})));

let body=ctx.request.fields;//得到檔案資訊

})複製**

路由中介軟體
//一級路由

const router = require('koa-router');

let user = new router();

user.get('/user', function (ctx) ).get('/query/:id', function (ctx) ).post('/user', function (ctx) ).get('/home', function (ctx) );

//多級路由

let user = new router();

user.get('/add', function (ctx) );

let article = new router();

article.get('/add', function (ctx) );

let router = new router();

router.use('/user', user.routes()); // /user/add

router.use('/article', article.routes()); ///article/add

複製**

koa自帶訪問cookie方法

讀取上下文請求中的cookie。

在上下文中寫入cookie。

ctx.cookies.set('name','sss',);

expires:cookie失效時間

複製**

session

let koa = require('koa');

let router = require('koa-router');

const session = require('koa-session');

router.get('/cross', (ctx,next)=> );

複製**

模板引擎

let koa = require('koa');

let router = require('koa-router');

let router = new router();

let views = require('koa-views');

map://識別html

}));

router.get('/',async (ctx,next)=>);

})複製**

靜態資源中介軟體

const static = require('koa-static')

ctx.body = 'not found'

})複製**

自己實現koa

// **的作用

function definegetter(property,name) )

}function definesetter(property,name) )

}// ctx.query = ctx.request.query

definegetter('request','query');

definegetter('response','body');

definesetter('response','body');

module.exports = proto;

//request

let request = ,

get path

() = require('url').parse(this.req.url);

return path;

},get query

() = require('url').parse(this.req.url,true);

return query;

} // .........

}module.exports = request;

//response

let response = ,

set body(value)

}module.exports = response;

複製**

從零開始node全棧學習筆記

計畫寫乙個node全棧的學習過程,不定期更新,因為不想給自己的定位只是前端開發,想多了解後端的學習。筆記最初是記在有道雲筆記的,現在分享出來,如有問題可以請各路大神指點。首先需要乙個伺服器。使用遠端登入工具 如x shell或secure 登入終端 ssh username ip輸入對應的密碼 安裝...

Python全棧(一),flask框架基礎

flask是一款非常流行的python web框架,出生於2010年,作者是armin ronacher,本來這個專案只是作者在愚人節的乙個玩笑,後來由於非常受歡迎,進而成為乙個正式的專案。flask自2010年發布第乙個版本以來,大受歡迎,深得開發者的喜愛,並且在多個公司已經得到了應用,flask...

全棧式框架的選擇 MEAN or MEANS

說明 個人部落格位址為edwardesire.com,歡迎前來品嚐。本部落格作為備份和引流 這兩個月一直在進行sails後端開發,其中遇到的問題不斷。放在研究使用者訪問控制矸例程上的時間太多,最後也沒用弄出什麼東西來。遂推薦降一級使用express框架,在進行資料庫的開發後,我們也等於正式使用上了m...