터미널> yarn add koa
터미널> yarn add --dev eslint
yarn run eslint --init
이후 세부 설정은 서적 참조 (604p)
.prettier 파일 생성해 설정하고,
Prettier에서 관리하는 코드 스타일은 ESLint에서 관리하지 않도록 설치하여 적용
yarn add eslint-config-prettier
{
...
rules : {
"no-unused-vars": "warn",
"no-console": "off"
}
// index.js
const Koa = require('koa');
const app = new Koa();
app.use(ctx => {
ctx.body = 'hello world';
})
app.listen(4000, () => {
console.log('Listening to port 4000');
})
// 실행은
// 터미널> node src
미들웨어 함수의 구조
(ctx, next) => {
}
// index.js
...
app.use((ctx, next) => {
console.log(ctx.url);
console.log(1);
next();
});
app.use((ctx, next) => {
console.log(2);
next();
});
app.use(...
...
// index.js
...
app.use((ctx, next) => {
console.log(ctx.url);
console.log(1);
if(ctx.query.authorized !== 1) {
ctx.status = 401;
return;
}
next()
});
app.use(...
...
// localhost:4000/?authorized=1 로 접속시에만 미들웨어 모두 처리되어 hello world 화면 보임
// 그 외에는 Unauthorized가 보임
// index.js
...
app.use((ctx, next) => {
console.log(ctx.url);
console.log(1);
if(ctx.query.authorized !== 1) {
ctx.status = 401;
return;
}
next().then(()=>{
console.log('END');
})
});
app.use(...
...
// 해당 주소로 이동시
// 콘솔에 1과, 그 다음 미들웨어의 2가 모두 찍힌 후 END가 찍힘
// index.js
...
app.use(async (ctx, next) => {
console.log(ctx.url);
console.log(1);
if(ctx.query.authorized !== 1) {
ctx.status = 401;
return;
}
await next();
console.log('END');
});
app.use(...
...
터미널> yarn add --dev nodemon
// package.json
{
...,
"scripts" : {
"start" : "node src",
"start:dev" : "nodemon --watch src/ src/index.js"
}
}
좋은 글 감사합니다!