$ yarn add qs
export const listPosts = ({ page, username, tag }) => { const queryString = qs.stringify({ page, username, tag, }); return client.get(`/api/posts?${queryString}`); };
/api/posts?username=tester&page=2
modules/posts.js
modules/index.js
containers/posts/PostListContainer.js
pages/PostListPage.js
Container
components/posts/PostList.js
yarn add sanitize-html
yarn add mongoose dotenv
PORT=4000 MONGO_URI=mongodb://localhost:27017/<database>
require('dotenv').config(); (...) const { PORT } = process.env; (...) const port = PORT || 4000; app.listen(port, () => { console.log('Listening to port %s', port); });
.env
(...) const { PORT, MONGO_URI } = process.env; (...) mongoose .connect(MONGO_URI, { useNewUrlParser: true, useFindAndModify: false }) .then(() => { console.log('Connected to MongoDB'); }) .catch(e => { console.error(e); });
Connected to MongoDB
코드를 수정하고 반영하기 위해서는 서버를 재시작을 해야하는데 nodemon을 이용하면 코드를 변경할때마다 자동으로 서버를 재시작을 해준다. yarn을 통해 설치가 가능하다
nodemon
$ yarn add --dev nodemon
package.json
{ (...) , "scripts": { "start": "node src", "start:dev": "nodemon --watch src/ src/index.js" } }
$ yarn start # 재시작이 필요 없을때 $ yarn start:dev # 코드 변경시 재시작 하도록
const Koa = require('koa'); const app = new Koa(); app.use(ctx => { ctx.body = 'hello word'; }); app.listen(4000, () => { console.log('Listening to port 4000'); });
$ node src
app.use
ctx
next
const Koa = require('koa'); const app = new Koa(); app.use((ctx, next) => { console.log(ctx); console.log(1); next(); }); app.use((ctx, next) => { console.log(2); next(); }); app.use(ctx => { ctx.body = 'hello world'; }); app.listen(4000, () => { console.log('Listening to port 4000'); });
app.use((ctx, next) => { console.log(ctx); console.log(1); if (ctx.query.authorized !== '1') { ctx.status = 401; // Unauthorrized return; } next(); });
http://localhost:4000/?authorized=1
hello world
Promise
Express
node 프로젝트 시작하기 전에 아래와 같이 환경을 구성하고 구현하자
yarn init -y yarn add koa yarn add --dev eslint // dev는 개발용 의존 모듈로 설치, package.json에서 dev dependencies 쪽이 모듈의 버전 입력 yarn run eslint --init // javascript 문법 검사, 깔끔한 코드 작성
{ "singleQuote": true, "semi": true, "useTabs": false, "tabWidth": 2, "trailingComma": "all", "printWidth": 80 }
을 추가하고 Prettier에서 관리하는 코드 스타일은 ESLint에서 관리하지 않도록 설치
$ yarn add eslint-config-prettier
.eslintrc.json의 파일은 아래와 같이 설정
.eslintrc.json
{ "env": { "browser": true, "commonjs": true, "es6": true, "node": true }, "extends": ["eslint:recommended", "prettier"], "globals": { "Atomics": "readonly", "SharedArrayBuffer": "readonly" }, "parserOptions": { "ecmaVersion": 2018 }, "rules": { "no-unused-vars": "warn", // 설정하지 않으면 사용하지 않는 변수에 대해서 Error "no-console": "off" // console.log를 사용하는것을 지양함. } }