node.js 기초

이재영·2023년 4월 28일
0

Node.js

목록 보기
1/12
post-thumbnail

node.js의 Repl

= 읽기(Read)- 해석(Eval) - 출력(print) - 반복(Loop)

Repl은 콘솔 환경에서 코드를 입력하면 즉시 실행해서 결과를 반환해주는 인터페이스, node.js의 코드를 test하고 실행할 수 있도록 해주는 대화형 콘솔이다.

Repl 레포 모드에 들어가는법 : 터미널 창에 node라고 입력하면 끝!
레포모드 종료하는법 : ctrl+c

Repl 모드에서

const str = "hello nodejs"; 입력 후
console.log(str); 입력하면

결과창에
hello nodejs
undefined
라고 뜨는데 그이유는

브라우저에서 실행하는 console.log와
node.js에서 실행하는 console.log가 실행되고 있는 환경이 다르기때문에 그렇다.

브라우저에서는 this 전역객체가 window,
node에서는 this 전역객체가 global 이다

node로 파일을 실행하여 응용프로그램을 만들 수 있다.
콘솔에서 node 구문뒤에 파일의 경로를 작성하면 된다.
ex)node index.js
-> 잠깐 실행되고 종료되는 응용프로그램을 만든것이다.


모듈이란? 프로그램의 단위

index2.js 라는 파일에서 아래와 같이 모듈로 정의하고 다른 파일에서 가져와 모듈화 시켜 사용 가능하다.

const BlockClass = [
		{
        	name : "안녕",
            age : 1,
            comment : function(){
            	console.log(this.name + "이야.";
        },{
        	name : "안녕2",
            age : 2,
            comment : function(){
            	console.log(this.name + "이야.";
        },
];

module.exports = BlockClass;

index3.js 라는 파일에서 모듈을 가져올 수 있다.

const BlockClass = require("./index2.js") //.js는 생략가능하다

위와 같이 require 메소드를 사용해 외부의 모듈을 모듈화 후
콘솔 창에 node index3.js 을 치면 index2.js의 내용을 확인할 수 있다.


node.js의 내장 모듈

nodejs에서 미리 만들어놓은 모듈을 내장 모듈이라고 한다.
require에서 모듈이름을 적으면 된다.

운영체제의 정보가 들어있는 모듈
const os = require("os");
console.log(os);

nodejs에서는 모듈은 각각의 파일 스코프를 가지기 때문에 this는 모듈 자체를 가르키게 된다.

레포모드 에서
global.console.time('a') // 코드 시작 시간
global.console.timeEnd('a'); // 코드 종료 시간 출력

전달된 객체를 표 형태로 보여주는 메소드
global.console.table({a:{name : "안녕"},b:{name : "안녕2"},c:{name : "안녕3"}})

실행 파일의 이름까지 보여줌
console.log(__filename);

실행한 파일의 디렉토리까지 보여줌
console.log(__dirname);

//process 객체
console.log(process.env); // 환경변수에 접근할 때
console.log(process.version); // 노드의 설치 버전
console.log(process.execPath); //노드의 경로
console.log(process.cpuUsage()); // Cpu 사용량


global과 module을 생략해서 작성할 수 있다.

console.log(module.exports === exports);

를 해보면 true라는 값이 반환된다.

exports.obj = {a:1};
exports.add = () =>{
    return 2;
}
function add2(){
    console.log("난 함수임");
}

exports.qwe = add2;

위와 같이 index5.js 에서 내보내면

index6.js 에서

const BlockClass = require("./index5.js");
console.log(BlockClass.obj);
console.log(BlockClass.add);
BlockClass.qwe();

작성 후 node index6.js로 출력하면

true
{ a: 1 }
2
난 함수임


웹 서버를 만들어보자

const http = require("http");

// createServer 메소드는 서버 객체를 만들어주고
// 클라이언트의 요청을 받으면 호출이 된다.
// 전달된 콜백 함수는 클라이언트의 요청을 받아서 처리 후
// 클라이언트에 응답해준다.

const server = http.createServer((req,res)=>{

//처리를 다하고~
//응답 end메소드 해당 내용을 응답한 후 종료.

res.end("server on");


// 포트를 지정하는 이유 : 네트워크 프로세스를 나눠 주기 위해서
//1025 ~ 65535까지 안에서
//개발할 때 8000 8080 3000 이런 포트들을 많이 사용한다.
const PORT = 4000;

//여기까지만 작성하면 바로 실행되자마자 종료된다.

//서버 객체의 listen 메소드를 호출해서
//클라이언트의 요청을 대기상태로 만들어줄 수 있다.
//이벤트 루프를 돌면서 요청이 오기까지 대기를 하다가
//요청이오면 응답해준다.

//listen메소드에 매개변수로 첫번째 매개변수로 port를 전달
server.listen(PORT,()=>{
    //콜백함수를 등록해서
    // 성공적으로 서버가 열린것인지 확인 가능하다.
    console.log("서버가 잘 열려있어요~"+ PORT + "에");
});
}

http://localhost:4000/에 접속해보면
sever on 을 확인할 수 있다.

profile
한걸음씩

0개의 댓글