goal
- module์ฌ์ฉ๋ฒ ์ตํ๊ธฐ
- require๋์์๋ฆฌ ์ตํ๊ธฐ
- exports์ module.exports์ ๋ํด ์์๋ณด๊ธฐ
<script>
ํ๊ทธ๋ฅผ ์ด์ฉํด์ ํ์ํ ํ์ผ์ ๋ถ๋ฌ์๋ค๋ฉด, node.js์์๋ js์ฝ๋ ๊ฐ์ฅ ์์ require
์ ์ด์ฉํด์ ํ์ํ ๋ชจ๋์ ๋ถ๋ฌ์ฌ ์ ์๋ค.const fs = require('fs')
// 'ํ์ผ์์คํ
' ๋ชจ๋์ ๋ถ๋ฌ์จ๋คfs.readFile
์ฒ๋ผ ๊ด๋ จ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.$ npm install ๐ค๏ธ
require( )
- node.js์์๋ ๋ชจ๋์ ๋ถ๋ฌ์ค๊ธฐ ์ํด์
require('๋ชจ๋๋ช ')
ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ ํ๋์ ๋ชจ๋๋ก ์ธ์ํ๋ค.
- ๋ชจ๋์ ํ์ฅ์๋ ์๋ตํ ์ ์๋ค.
require
๋ object๋ฅผ ๋ฐํํ๋ค. =require
๋ก ๋ถ๋ฌ์จ ๋ชจ๋์ ๊ฐ์ฒด๋ก ๋ฐํ๋๋ค.require()
๋module.exports
๋ฅผ ๋ฆฌํดํ๋ค.exports
๋module.exports
๋ฅผ ์ฐธ์กฐํ๋ค.- ์ธ์๋ก ํ์ผ๋ฟ๋ง ์๋๋ผ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ง์ ํ ์๋ ์๋ค.
- node.js์์ ๊ธฐ๋ณธ์ผ๋ก ํฌํจํ๊ณ ์๋ ๋ชจ๋์ ๋ก๋ฉํ ๋๋ path๋ฅผ ๋ช ์ํ์ง ์์๋ ๋๋ค.
- npm์ ํตํด์ ์ค์นํ ์ธ๋ถ ํจํค์ง ๋ชจ๋๋ path๋ฅผ ๋ช ์ํ์ง ์์๋ ๋๋ค.
- ์ด์ธ์ ํ์ผ๋ชจ๋๋ค์ path๋ฅผ ๋ช ์ํด์ผ ํ๋ค.
require("์ด ์์ string type์ผ๋ก ์์ฑํ๋ค")
ํจ์์ ์์ค์ฝ๋๋ ์๋์ ๊ฐ๋ค. (์ฐธ๊ณ ๋ง)// test.js const foo = require('./foo.js'); // = require('./foo') console.log(foo.a) // ? ------------------------------------- // foo.js const a = 100; exports.a = a; ------------------------------------- // test.js ์์ require์ ์คํ ์์ var require = function('./foo.js'){ var fileAsStr = readFile('./foo.js') var module.exports = {} eval(fileAsStr) // ๐๏ธ์๋์ ๊ฐ์ ์์ ์ ์คํ๐๏ธ // ์) foo.jsํ์ผ์ ๋ด์ฉ์ด ์ฌ๊ธฐ์ ๋ค์ด๊ฐ๋ค๊ณ ๋ณผ ์ ์์ const a = 100; exports.a = a; // exports๊ฐ์ฒด์(ํ์ฌ ๋น ๊ฐ์ฒด) ํค ๊ฐ์ a, ๋ฒจ๋ฅ ๊ฐ์ 100 ํ ๋น return module.exports } ------------------------------------- // foo.js ์ ๋ฐํ์ const foo = {a: 100}; console.log(foo.a) // 100 // exports์ ์ฝ์ ๋ ์์ฑ๋ค์ด require() ํจ์์ output
exports & module.exports
- module.exports์ exports๋ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ฐ๋ผ๋ณธ๋ค.
- exports๋ ๋จ์ํ๊ฒ module.exports๋ฅผ ์ฐธ์กฐํ๋ค.
let exports = module.exports = { }
- ๋๊ฐ์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ exportsํ ๊ฐ์ ์ฐธ์กฐํ๊ฒ ๋๋ค.
- ๊ฐ์ฒด๋ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ค
- exports๊ฐ์ฒด๋ ํ๋กํผํฐ or ๋ฉ์๋๋ฅผ ์ฌ๋ฌ ๊ฐ ์ ์ํ ์ ์์ง๋ง, module.exports์๋ ํ๋์ ๊ฐ(์์ํ์ , ํจ์, ๊ฐ์ฒด)์ ํ ๋นํ ์ ์๋ค.
const { PI } = Math; exports.area = (r) => PI * r * r; exports.circumference = (r) => 2 * PI * r; ----------------------------------------------- const { PI } = Math; module.exports = function (r) { return { area() { return PI * r * r; }, circumference() { return 2 * PI * r} };
// bar.js
// ํฐ๋ฏธ๋
// url ๊ตฌ์กฐ
๋ฅผ ๋ณด๋ฉด์ ํ์ฑ๋ url๊ฐ์ฒด๋ฅผ ํ์ฉํ ์ ์๋ค.