๋ ธ๋ ๋ด์ฅ ๊ฐ์ฒด ์์๋ณด๊ธฐ
๋ ธ๋์์๋ ๊ธฐ๋ณธ์ ์ธ ๋ด์ฅ ๊ฐ์ฒด์ ๋ด์ฅ ๋ชจ๋์ ์ ๊ณตํ๋ค.
1. global ๊ฐ์ฒด
global ๊ฐ์ฒด : ๋ธ๋ผ์ฐ์ ์ window์ ๊ฐ์ ์ ์ญ ๊ฐ์ฒด
์ ์ญ ๊ฐ์ฒด์ด๋ฏ๋ก ๋ชจ๋ ํ์ผ์์ ์ ๊ทผํ ์ ์๋ค. ๋ํ, window.open ๋ฉ์๋๋ฅผ ๊ทธ๋ฅ open์ผ๋ก ํธ์ถํ ์ ์๋ ๊ฒ์ฒ๋ผ global๋ ์๋ตํ ์ ์๋ค.
ex. global.require → require
ex. global.console → console
* ๋ ธ๋์ window, document ๊ฐ์ฒด
๋ ธ๋์๋ DOM์ด๋ BOM์ด ์์ด window์ document ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ ธ๋์์ window ๋๋ document๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
global ๊ธฐ๋ฅ ์ฌ์ฉํ๊ธฐ
์ ์ญ ๊ฐ์ฒด๋ผ๋ ์ ์ ์ด์ฉํ์ฌ ๊ฐ๋จํ ๋ฐ์ดํฐ๋ฅผ ํ์ผ๋ผ๋ฆฌ ๊ณต์ ํด๋ณด๊ธฐ.
2. console
console๋ global ๊ฐ์ฒด ์์ ๋ค์ด์๋ค. console ๊ฐ์ฒด๋ ๋ณดํต ๋๋ฒ๊น ์ ์ํด์ ์ฌ์ฉ๋๋ค.
- console.time(๋ ์ด๋ธ) : console.timeEnd(๋ ์ด๋ธ)๊ณผ ๋์๋์ด ๊ฐ์ ๋ ์ด๋ธ์ ๊ฐ์ง tim๊ณผ timeEnd ์ฌ์ด์ ์๊ฐ์ ์ธก์ ํ๋ค.
- console.log(๋ด์ฉ) : ํ๋ฒํ ๋ก๊ทธ๋ฅผ ์ฝ์์ ํ์ํ๋ค. console.log(๋ด์ฉ, ๋ด์ฉ, ...) ์ฒ๋ผ ์ฌ๋ฌ ๋ด์ฉ์ ๋์์ ํ์ํ ์๋ ์๋ค.
- console.error(์๋ฌ ๋ด์ฉ) : ์๋ฌ๋ฅผ ์ฝ์์ ํ์ํ๋ค.
- console.dir(๊ฐ์ฒด, ์ต์ ) : ๊ฐ์ฒด๋ฅผ ์ฝ์์ ํ์ํ ๋ ์ฌ์ฉํ๋ค. ์ฒซ ๋ฒ์งธ ์ธ๋ค๋ก ํ์ํ ๊ฐ์ฒด๋ฅผ ๋ฃ๊ณ , ๋ ๋ฒ์งธ ์ธ์๋ก ์ต์ ์ ๋ฃ๋๋ค. ์ต์ ์ colors๋ฅผ true๋ก ํ๋ฉด ์ฝ์์ ์ฑ ์ด ์ถ๊ฐ๋์ด ๋ณด๊ธฐ๊ฐ ํ๊ฒฐ ํธํด์ง๋ค. depth๋ ๊ฐ์ฒด ์์ ๊ฐ์ฒด๋ฅผ ๋ช ๋จ๊ณ๊น์ง ๋ณด์ฌ์ค์ง๋ฅผ ๊ฒฐ์ ํ๋ค. (๊ธฐ๋ณธ๊ฐ์ 2์ด๋ค.)
- console.trace(๋ ์ด๋ธ) : ์๋ฌ๊ฐ ์ด๋์ ๋ฐ์ํ๋์ง ์ถ์ ํ ์ ์๊ฒ ํด์ค๋ค. ๋ณดํต์ ์๋ฌ ๋ฐ์ ์ ์๋ฌ ์์น๋ฅผ ์๋ ค์ฃผ๋ฏ๋ก ์์ฃผ ์ฌ์ฉํ์ง๋ ์์ง๋ง, ์์น๊ฐ ๋์ค์ง ์๋๋ค๋ฉด ์ฌ์ฉํ ๋ง ํ๋ค.
3. ํ์ด๋จธ
ํ์ด๋จธ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํจ์์ธ setTimeout, setInterval, setImmediately๋ ๋ ธ๋์์ window ๋์ global ๊ฐ์ฒด ์์ ๋ค์ด์๋ค.
- setTimeout(์ฝ๋ฐฑ ํจ์, ๋ฐ๋ฆฌ์ด) : ์ฃผ์ด์ง ๋ฐ๋ฆฌ์ด(1000๋ถ์ 1์ด) ์ดํ์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํํ๋ค.
- setInterval(์ฝ๋ฐฑ ํจ์, ๋ฐ๋ฆฌ์ด) : ์ฃผ์ด์ง ๋ฐ๋ฆฌ์ด๋ง๋ค ์ฝ๋ฐฑํจ์๋ฅผ ๋ฐ๋ณต ์คํํ๋ค.
- setImmediate(์ฝ๋ฐฑ ํจ์) : ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฆ์ ์คํํ๋ค.
์ด ํ์ด๋จธ ํจ์๋ค์ ๋ชจ๋ ์์ด๋๋ฅผ ๋ฐํํ๋ค. ์์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ํ์ด๋จธ๋ฅผ ์ทจ์ํ ์ ์๋ค.
- clearTimeout(์์ด๋) : setTimeout์ ์ทจ์ํ๋ค.
- clearInterval(์์ด๋) : setInterval์ ์ทจ์ํ๋ค.
- clearImmediate(์์ด๋) : setImmediate๋ฅผ ์ทจ์ํ๋ค.
- ์ ์ผ ๋จผ์ ์คํ๋๋ ๊ฒ์ immediate์ด๋ค. immediate2๋ ๋ฐ๋ก clearImmediate๋ฅผ ์ฌ์ฉํด์ ์ทจ์ํ๊ธฐ ๋๋ฌธ์ ์คํ๋์ง ์๋๋ค.
- ์ฝ๋ ์คํ 1์ด ํ์๋ interval์ ์ฝ๋ฐฑ์ด ์คํ๋๋ค.
- ์ฝ๋ ์คํ 1.5์ด ํ์๋ timeout์ ์ฝ๋ฐฑ์ด ์คํ๋๋ค.
- interval์ ์ฝ๋ฐฑ์ 1์ด๋ง๋ค ์คํ๋๋ฏ๋ก ์ฝ๋ ์คํ ํ 2์ด๊ฐ ์ง๋ฌ์ ๋์๋ ์ฝ๋ฐฑ์ด ์คํ๋๋ค.
- 2.5์ด๊ฐ ์ง๋ฌ์ ๋ clearTimeout๊ณผ clearInterval์ด ๊ฐ๊ฐ timeout2์ interval์ ์ทจ์ํ๋ค. ๋ฐ๋ผ์ ์ฝ๋ ์คํ 3์ด ํ์๋ ๋ก๊ทธ๊ฐ ์๋ฌด๊ฒ๋ ๋จ์ง ์๋๋ค.
4. __filename, __dirname
๋ ธ๋์์๋ ํ์ผ ์ฌ์ด์ ๋ชจ๋ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํ์ฌ ํ์ผ์ ๊ฒฝ๋ก๋ ํ์ผ๋ช ์ ์์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์๋ค. ๋ ธ๋๋ __filename, __dirname์ด๋ผ๋ ํค์๋๋ก ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ค.
5. module, exports
๋ชจ๋์ ๋ง๋ค ๋ module.exports ๋ฟ๋ง ์๋๋ผ exports ๊ฐ์ฒด๋ก๋ ๋ชจ๋์ ๋ง๋ค ์ ์๋ค.
- module.exports๋ก ํ ๋ฒ์ ๋์ ํ๋ ๋์ , ๊ฐ๊ฐ์ ๋ณ์๋ฅผ exports ๊ฐ์ฒด์ ํ๋์ฉ ๋ฃ์๋ค. ๋์ผํ๊ฒ ๋์ํ๋ ์ด์ ๋ module.exports์ exports๊ฐ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ค์ ๋ก console.log(module.exports === exports)๋ฅผ ํ๋ฉด true๊ฐ ๋์จ๋ค. ๋ฐ๋ผ์ exports ๊ฐ์ฒด์ add ํจ์๋ฅผ ๋ฃ์ผ๋ฉด module.exports์๋ add ํจ์๊ฐ ๋ค์ด๊ฐ๋ค.
6. process
process ๊ฐ์ฒด๋ ํ์ฌ ์คํ๋๊ณ ์๋ ๋ ธ๋ ํ๋ก์ธ์ค์ ๋ํ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ค.
1) process.env
์์คํ ์ ํ๊ฒฝ ๋ณ์.
process.env๋ ์๋น์ค์ ์ค์ํ ํค๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ผ๋ก๋ ์ฌ์ฉ๋๋ค. ์๋ฒ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋น๋ฐ๋ฒํธ์ ๊ฐ์ข API ํค๋ฅผ ์ฝ๋์ ์ง์ ์ ๋ ฅํ๋ ๊ฒ์ ์ํํ๋ค. ํน์ฌ ์๋น์ค๊ฐ ํดํน๋นํด ์ฝ๋๊ฐ ์ ์ถ๋์์ ๋ ๋น๋ฐ๋ฒํธ๊ฐ ์ฝ๋์ ๋จ์ ์์ด ์ถ๊ฐ ํผํด๊ฐ ๋ฐ์ํ ์ ์๋ค.
๋ฐ๋ผ์ ์ค์ํ ๋น๋ฐ๋ฒํธ๋ ๋ค์๊ณผ ๊ฐ์ด process.env์ ์์ฑ์ผ๋ก ๋์ฒดํ๋ค.
2) process.nextTick(์ฝ๋ฐฑ)
์ด๋ฒคํธ ๋ฃจํ๊ฐ ๋ค๋ฅธ ์ฝ๋ฐฑ ํจ์๋ค๋ณด๋ค nextTick์ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ฐ์ ์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๋ง๋ ๋ค.
- process.nextTick์ setImmediate๋ setTimeout๋ณด๋ค ๋จผ์ ์คํ๋๋ค. ์ฝ๋ ๋งจ ๋ฐ์ Promise๋ฅผ ๋ฃ์ ๊ฒ์ resolve๋ Promise๋ nextTick์ฒ๋ผ ๋ค๋ฅธ ์ฝ๋ฐฑ๋ค๋ณด๋ค ์ฐ์ ์๋๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋์ process.nextTick๊ณผ Promise๋ฅผ ๋ง์ดํฌ๋กํ์คํฌ๋ผ๊ณ ๋ฐ๋ก ๊ตฌ๋ถ์ง์ด ๋ถ๋ฅธ๋ค.
3) process.exit(์ฝ๋)
์คํ ์ค์ธ ๋ ธ๋ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ๋ค. ์๋ฒ์ ์ด ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ๊ฐ ๋ฉ์ถ๋ฏ๋ก ์๋ฒ์๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์๋๋ค. ํ์ง๋ง ์๋ฒ ์ธ์ ๋ ๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋จ์์๋ ์๋์ผ๋ก ๋ ธ๋๋ฅผ ๋ฉ์ถ๊ฒ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค.
- process.exit ๋ฉ์๋๋ ์ธ์๋ก ์ฝ๋ ๋ฒํธ๋ฅผ ์ค ์ ์๋ค. ์ธ์๋ฅผ ์ฃผ์ง ์๊ฑฐ๋ 0์ด๋ฉด ์ ์ ์ข ๋ฃ๋ฅผ ๋ปํ๊ณ , 1์ ์ฃผ๋ฉด ๋น์ ์ ์ข ๋ฃ๋ฅผ ๋ปํ๋ค. ๋ง์ฝ ์๋ฌ๊ฐ ๋ฐ์ํด์ ์ข ๋ฃํ๋ ๊ฒฝ์ฐ์๋ 1์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
'Dev.log > Node.js' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Node.js ๊ต๊ณผ์] #6. ์ด๋ฒคํธ ์ดํดํ๊ธฐ (0) | 2021.06.29 |
---|---|
[Node.js ๊ต๊ณผ์] #5. ํ์ผ ์์คํ ์ ๊ทผํ๊ธฐ (0) | 2021.06.29 |
[Node.js ๊ต๊ณผ์] #4. ๋ ธ๋ ๋ด์ฅ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ (1) | 2021.06.29 |
[Node.js ๊ต๊ณผ์] #2. ๋ ธ๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ์คํํ๊ธฐ (0) | 2021.06.24 |
[Node.js ๊ต๊ณผ์] #1. ํ๊ฒฝ ์ธํ (0) | 2021.06.24 |