goal
๐ฏ๏ธ ๊ธฐ๋ณธ ๋ชจ๋๋ค์ ๋ํด ์์๋ณด๊ณ , ์ค์ํ ๋ชจ๋๋ค์ ๋ค์ ๋ฐ๋ก ์ ๋ฆฌํด ๋ณด์๋ค
๋
ธ๋์ ๊ธฐ๋ณธ ๋ชจ๋ ๐ฏ๏ธ
๋ชจ๋์ ๊ฐ๋
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๊ฐ๋
๋ค์ ๊ทธ๋ฃนํํด๋์ ๊ฐ๊ฐ์ ๊ฐ๋
๋ค
- ๋
ธ๋๋ก ๊ฐ๋ฐํ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๋ฃจ๋ ๊ธฐ๋ณธ ์กฐ๊ฐ
- ๊ด๋ จ๋ ์ฝ๋๋ค์ ๋ชจ์์ ์บก์ํํด๋์ ๊ฒ / (๋ฌผ๊ฑด์ ๋ง๋ค๋ ์ฐ๋ ๋ถํ)
์ ์ญ๊ฐ์ฒด
- JS์
window
/ document
์ ๊ฐ์
- ๋
ธ๋์์๋
global
console.log(global)
์ ์ฐ์ด๋ณด๋ฉด ์ ์ ์์
require(โ./moduleโ)
global.require(โ./moduleโ)
์์ ์๋๋ ๊ฐ์ ์๋ฏธ์ ์ฝ๋
๋ชจ๋ ์ข
๋ฅ
- ๋ชจ๋์ ์ ์ ๋ฆฌํด ๋์ผ์ ๊ฐ๋ฐ์๋ ๋ธ๋ก๊ทธ๋ ๐๏ธ ์ฌ๊ธฐ๋ฅผ ์ฐธ๊ณ
- ๊ธฐ๋ณธ ๋ชจ๋์ ๋
ธ๋๋ฅผ ์ค์นํ๋ฉด ๊ธฐ๋ณธ์ผ๋ก ์ค์น๋๋ ๋ชจ๋๋ก์ ํ์ผ ์
์ถ๋ ฅ, ์ด๋ฒคํธ ๊ด๋ฆฌ, HTTP ํ๋กํ ์ฝ ๊ด๋ฆฌ ๋ฑ์ ๊ดํ ๋ด์ฉ์ผ๋ก์จ ๋
ธ๋์ ๋น๋๊ธฐ ์
์ถ๋ ฅ ์ฒ๋ฆฌ๋ฅผ ์ํ ๊ธฐ๋ณธ์ ์ธ ๊ธฐ๋ฅ๋ค์ ์ ๊ณตํ๋ ๋ชจ๋
- ํ์ฅ ๋ชจ๋์ ๋
ธ๋์ ๊ธฐ๋ฅ์ ํ์ฅํ๊ธฐ ์ํ ๊ฒ์ผ๋ก์จ ์ข ๋ ์ฌ์ด HTTP ์๋ฒ ์์ฑ, ๊ธฐ๋ณธ ํ์ผ ์
์ถ๋ ฅ์์ ์ ๊ณตํ์ง ์๋ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฑ ๋
ธ๋๋ฅผ ํ์ฅํ๊ณ ๋ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํ ๋ชจ๋
- ์ผ๋ฐ ๋ชจ๋์ ๋ค์ดํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ๋
ธ๋์ ๋ชจ๋์ ๊ฐ๋ฐํ ๊ฒฝ์ฐ
- ๋ค์ดํฐ๋ธ ๋ชจ๋์ ๋ค์ดํฐ๋ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ C/C++๋ก ๋
ธ๋์ ๋ชจ๋์ ๊ฐ๋ฐํ ๊ฒฝ์ฐ
- ๊ธ๋ก๋ฒ ๋ชจ๋์ ๊ธฐ๋ณธ ๋ชจ๋์ ํฌํจํ์ฌ ์ด๋์๋ ์ฌ์ฉํ ์ ์๋๋ก ์ค์นํ ํ์ฅ ๋ชจ๋
- ๋ก์ปฌ ๋ชจ๋์ ํด๋น ์ ํ๋ฆฌ์ผ์ด์
์์๋ง ์ฌ์ฉํ๊ธฐ ์ํด ์ค์นํ ํ์ฅ ๋ชจ๋์ด๋ ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐํ ๋ชจ๋
- ๋ณตํฉ ๋ชจ๋์ ๋ด๋ถ ๋ชจ๋์ด๋ ๋ฐ์ดํฐ ํ์ผ, ํ
ํ๋ฆฟ, ํ
์คํธ ์ฝ๋ ๋ฑ์ ํฌํจํ๋ ๋ชจ๋
require() ๋ฉ์๋์ module.exports
- HTML ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ช
์๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ค์, ์น ๋ธ๋ผ์ฐ์ ์ ์ํด ๋ก๋ฉ๋๋ฉฐ ์๋ก ์ฐธ์กฐํ๊ฑฐ๋ ํธ์ถ /
- ํ์ง๋ง, ๋
ธ๋๋ HTML์ ์ฌ์ฉํ์ง ์์ผ๋ฏ๋ก, ์๋ก ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ๋ค์ด ์๋ก ์ฐธ์กฐํ๊ณ ํธ์ถํ๋ ๋ฐฉ๋ฒ์ด ํ์
- require() ๋ฉ์๋๋ ๋ชจ๋ ์๋ณ์์ธ module.exports๋ฅผ ์ด์ฉํด ๋ชจ๋์ด ์ ๊ณตํ๋ ํจ์๋ ๊ฐ์ฒด ๋ฑ์ ๋ฐํ
- ๋ง์ฝ ๋ถ๋ฌ์จ ๋ชจ๋์ด ๋ค๋ฅธ ๋ชจ๋์ด ์์ด์ผ ํ๋ค๋ฉด ๊ทธ ๋ชจ๋๋ ๊ฐ์ด ๋ก๋
- ๋
ธ๋์์ ํ๋์ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ํ๋์ ๋ชจ๋์ด ๋ ์ ์๋ค
- ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ ๋ด๋ถ์์ ํจ์๋ ๋ณ์๋ฅผ module.exports์ ํ ๋นํ๋ฉด ์ธ๋ถ์์ ์ ๊ทผํ ์ ์์
- ์ฆ, ๋ชจ๋์ ์ฌ์ฉํ๋ ํ์ผ์์๋ require() ๋ฉ์๋๋ก ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ผ์ ๋ถ๋ฌ์์ module.exports๋ก ํ์ฉ๋ ๋ณ์๋ ํจ์๋ฅผ ์ฌ์ฉํ ์ ์์
(๋ง์ด ์ฐ์ด๋) ์ ์ญ ๊ฐ์ฒด : global
- console ๊ฐ์ฒด (์ ์ฒด ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํ API๋ฌธ์)
- Process ๊ฐ์ฒด (์ ์ฒด ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ์ ๋ฆฌํ API๋ฌธ์)
- ์์ฑ
- process.argv: ํ๋ก๊ทธ๋จ์ ๋งค๊ฐ๋ณ์ ์ ๋ณด
- process.env : ์ปดํจํฐ ํ๊ฒฝ๊ณผ ๊ด๋ จ๋ ์ ๋ณด
- process.version : Node.js์ ๋ฒ์
- process.versions : Node.js ํ๋ก์ธ์ค์์ ์ฌ์ฉํ๋ ๋ชจ๋๋ค์ ๋ฒ์
- process.arch : ํ๋ก์ธ์์ ์ํคํ
์ฒ
- process.platform : ํ๋ซํผ์ ์ ๋ณด
- ๋ฉ์๋
- process.exit() : ํ๋ก๊ทธ๋จ ์ข
๋ฃ
- process.memoryUsage() : ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์ ๋ณด
- process.uptime() : ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์คํ๋ ์๊ฐ
- Exports ๊ฐ์ฒด
- ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์
- exports ๊ฐ์ฒด๋ฅผ ํตํด double๊ณผ plus ๊ฐ์ด ๋ด๊ฐ ๋ง๋ค๊ณ ์ ํ๋ ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ , ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ค๋ฅธ js ํ์ผ์์ require() ํจ์๋ฅผ ํตํด js ํ์ผ์ ๋ถ๋ฌ์ค๋ฉด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์์
exports.double = function(r) {
return r * r;
};
exports.plus = function(r) {
return r + r;
};
const caculator = require('./test.js');
console.log('Double value is '+ caculator.double(3));
console.log('Plus value is ' + caculator.plus(3));
os๋ชจ๋
- ์ด์์ฒด์ ์ ์์คํ
์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ชจ๋
Utility ๋ชจ๋
- node.js์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ ์ค ์ ์ฉํ ๊ธฐ๋ฅ๋ง์ ๋ชจ์๋์ ๋ชจ๋
- (๋ชจ๋ ๋ฉ์๋ API)
- util.format(format, [...]) : console.log() ๋ฉ์๋์ ๋น์ทํ ๊ธฐ๋ฅ์ด์ง๋ง console.log()๋ ํ๋ฉด์ ์ถ๋ ฅํ๊ณ util.format์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค. printf์ ๊ฐ์ ํ์์ผ๋ก ์ฒซ ์๊ท๋จผํธ๋ฅผ ์ฌ์ฉํด์ ํฌ๋งทํ
๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. ํ๋ ์ด์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๊ท๋จผํธ์ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค.
- %s : ๋ฌธ์์ด
- %d : ์ซ์(์ ์๋ถํฐ ์์๊น์ง ํํ ๊ฐ๋ฅ)
- %j : JSON
- % : ํผ์ผํธ ๊ธฐํธ('%'). ์ด ๊ธฐํธ๋ ํ๋ ์ด์คํ๋๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
util.debug(string)
: ํ๋ก๊ทธ๋จ์ ์คํ์ ๋ฉ์ถ๊ณ ์ฆ๊ฐ์ ์ผ๋ก string์ ์ถ๋ ฅํฉ๋๋ค.
util.log(string)
: ํ์์คํฌํ ์๊ฐ๊ณผ ํจ๊ป string์ ์ถ๋ ฅํฉ๋๋ค.
util.isArray(object)
: ์ฃผ์ด์ง object๊ฐ Array์ด๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฆฌํดํฉ๋๋ค.
util.isRegExp(object)
: ์ฃผ์ด์ง object๊ฐ RegExp์ด๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฆฌํดํฉ๋๋ค.
util.isDate(object)
: ์ฃผ์ด์ง object๊ฐ Date์ด๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฆฌํดํฉ๋๋ค.
util.isError(object)
: ์ฃผ์ด์ง object๊ฐ Error์ด๋ฉด true, ์๋๋ฉด false๋ฅผ ๋ฆฌํดํฉ๋๋ค.
File System ๋ชจ๋
- ํ์ผ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ์์
์ ํ๋ ๋ชจ๋
- ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ์ผ๋ฉด ํ์ผ์ ์ฝ์ผ๋ฉด์ ๋ค๋ฅธ ์์
๋ ๋์์ ์ํํ ์ ์๊ณ , ํ์ผ์ ๋ค ์ฝ์ผ๋ฉด ๋งค๊ฐ๋ณ์ callback์ผ๋ก ์ ๋ฌํ ํจ์๊ฐ ํธ์ถ๋ด
- ๋น๋๊ธฐ ํ์์ ํญ์ ๋ง์ง๋ง ์ธ์๊ฐ ์ํ ์๋ฃ ์ ํธ์ถํ ์ฝ๋ฐฑ ํจ์๋ก ์์ฑ๋์ด์ผ ํจ
- [options]์๋ ๋ณดํต ์ธ์ฝ๋ฉ ๋ฐฉ์์ ์ฐ๋ฉฐ, ์น์์๋ UTF-8์ ์ฃผ๋ก ์ฌ์ฉ
- (๋ชจ๋ ๋ฉ์๋ API)
fs.readFile(filename, [options], callback)
: filename์ ํ์ผ์ [options]์ ๋ฐฉ์์ผ๋ก ์ฝ์ ํ callback์ผ๋ก ์ ๋ฌ๋ ํจ์๋ฅผ ํธ์ถํฉ๋๋ค. (๋น๋๊ธฐ์ )
fs.readFileSync(filename, [options])
: filename์ ํ์ผ์ [options]์ ๋ฐฉ์์ผ๋ก ์ฝ์ ํ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค.(๋๊ธฐ์ )
fs.writeFile(filename, data, [options], callback)
: filename์ ํ์ผ์ [options]์ ๋ฐฉ์์ผ๋ก data ๋ด์ฉ์ ์ด ํ callback ํจ์๋ฅผ ํธ์ถํฉ๋๋ค.(๋น๋๊ธฐ์ )
fs.writeFileSync(filename, data, [options])
: filename์ ํ์ผ์ [options]์ ๋ฐฉ์์ผ๋ก data ๋ด์ฉ์ ์๋๋ค.(๋๊ธฐ์ )
- ๋๊ธฐ์ ๋ฐฉ์ - ํ์ผ์ฝ๊ธฐ์ ์๋ฌ์ฒ๋ฆฌ
try {
var data = fs.readFileSync('notexist.txt', 'utf8');
console.log(data);
} catch (err) {
console.log(err);
}
- ๋น๋๊ธฐ์ ๋ฐฉ์ - ํ์ผ์ฝ๊ธฐ์ ์๋ฌ์ฒ๋ฆฌ
fs.readFile('notexist.txt', 'utf8', function(err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
}
});
Event ๋ชจ๋
- require() ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ก๋ํ๊ณ , ๊ทธ ๊ฐ์ฒด๋ฅผ ํตํด EventEmitter ํด๋์ค๋ฅผ ๋ก๋ํ์ฌ ์ฌ์ฉ
- (๋ชจ๋ ๋ฉ์๋ API)
emitter.addListener(event, listener)
: on() ๋ฉ์๋์ ๊ฐ์ต๋๋ค. ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ ๋ฉ์๋์
๋๋ค.
emitter.on(event, listener)
: addListener()๊ณผ ๋์ผํฉ๋๋ค. ์ด๋ฒคํธ๋ฅผ ์์ฑํ๋ ๋ฉ์๋์
๋๋ค.
emitter.once(event, listener)
: ์ด๋ฒคํธ๋ฅผ ํ ๋ฒ๋ง ์ฐ๊ฒฐํ ํ ์ ๊ฑฐํฉ๋๋ค.
emitter.removeListener(event, listener)
: ํน์ ์ด๋ฒคํธ์ ํน์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํฉ๋๋ค. ์ด ๋ฉ์๋๋ฅผ ์ด์ฉํด ๋ฆฌ์ค๋๋ฅผ ์ญ์ ํ๋ฉด ๋ฆฌ์ค๋ ๋ฐฐ์ด์ ์ธ๋ฑ์ค๊ฐ ๊ฐฑ์ ๋๋ ์ฃผ์ํด์ผ ํฉ๋๋ค.
emitter.removeAllListeners([event])
: ๋ชจ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ ๊ฑฐํฉ๋๋ค.
emitter.setMaxListeners(n)
: n์ผ๋ก ํ ์ด๋ฒคํธ์ ์ต๋ํ์ฉ ๊ฐ์๋ฅผ ์ ํด์ค๋๋ค. node.js๋ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ํ ์ด๋ฒคํธ์ 10๊ฐ์ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑํ ์ ์๋๋ฐ, 11๊ฐ ์ด์์ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด n๊ฐ์ ๋๊ฒจ์ฃผ๋ฉด ๋ฉ๋๋ค. n๊ฐ์ผ๋ก 0์ ๋๊ฒจ ์ฃผ๋ฉด ์ฐ๊ฒฐ ๊ฐ์ ์ ํ์ด ์ฌ๋ผ์ง๋๋ค.
emitter.emit(eventName[, ...args])
: ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํต๋๋ค.
์์
function Foo() {
}
Foo.prototype = {
bar: function() {
console.log('Foo_bar ์คํ');
}
};
function Bar() {
}
Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.baz = function() {
console.log('Bar_baz ์คํ');
};
Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();
- in Node :
util.inherits()
๋ฉ์๋
var util = require('util');
function Bar() {
}
util.inherits(Bar, Foo);
Bar.prototype.baz = function() {
console.log('Bar_baz ์คํ');
};
Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();
์ถ์ฒ : https://degurii.tistory.com/88 ๐๏ธ