본문 바로가기

WEB/Node.js

Node.js, NPM

728x90
반응형

▶ Node.js

-Chrome V8 Javascipt 엔진으로 빌드된 JavaScript 런타임

-Javascript로 브라우저 밖에서 서버 구축 등 다양한 코드를 실행할 수 있다.

-내장 HTTP 서버 라이브러리를 포함하고 있어, 웹 서버에서 아파치 등 별도의 소프트웨어 없이 동작하는 것이 가능하다.

-방대한 모듈(npm)들이 존재한다.

Javascript를 서버에서도 사용할 수 있도록 만든 프로그램 (스크립트 언어 x, 프로그램 환경임)

웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌음

웹 서버에서 아파치 등의 별도 소프트웨어 없이 동작하는 것이 가능

 

장점:

자바스크립트를 동일하게 사용해서 서버단 로직을 처리할 수 있음

새로운 언어 습득 X, 자바스크립트를 활용해서 서버기술 개발,응용 가능

이벤트 기반 비동기방식이라 서버 무리 적음

Npm 을 통한 다양한 모듈 제공

 

단점:

이벤트 기반 비동기방식이라 서버단 로직이 복잡한 경우 콜백함수 발생 가능

(콜백함수 다른 함수의 인자로써 넘겨진 후 특정 이벤트에 의해 호출되는 함수)

코드를 순차적으로 실행 X, 비동기 방식으로 이벤트 보내고, 응답이 오면 처리

→ JAVA 개발을 했던 방식으로 설계

단일 쓰레드이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 어울리지 않음

(게시판 같은 I/O가 많은 웹서비스 GOOD)

▶NPM (node package manager)

-자바스크립트 패키지 매니저

-Node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소

-패키지 설치 및 관리를 위한 CLI 를 제공한다.

-각각의 모듈들은 npm 공식 홈페이지에서 찾을 수 있으며, 모듈마다 다운로드부터 사용방법까지 자세히 나와있다.

Npm 웹사이트 : 패키지를 찾을 수 있음 npm<패키지 이름> 검색시 해당 패키지의 저장소 페이지가 나옴

Package npm에 배포한 코드를 말함 ex. Angular, react

 

CLI(Command Line Interface) : 터미널에서 cli 작동 가능

저장소 : 패키지들을 모아놓은 공개 저장소가 존재함. 계정 업그레이드 시 비공개 저장소도 사용 가능

<NPM을 사용한 Node Project>

-package.json : 어떤 모듈이 어떤 버전으로 깔렸는지, 버전 명시 파일

-package-lockjson : package.json 으로는 부족한 정보를 도와주는 파일. 정확한 버전이 명시되어져있다.

명령어
설명
npm init
package 초기설정 -> package.json 파일이 생성된다.
npm start
start로 설정한 js 파일 node로 실행
npm install [패키지 명]
외부 패키지 설치
npm update
설치한 패키지들 업데이트
npm uninstall [패키지 명]
패키지 삭제

▶Express

-Express 는 Node.js 를 위한 웹 프레임워크 중 하나

-Node.js 의 사실상 표준 서버 프레임워크

 

EJS 템플릿 엔진 (Embedded JavaScript)

-자바스크립트가 내장되어 있는 html 파일

-html 태그처럼 자바스크립트 내용을 삽입할 수 있음

-서버에서 보낸 변수를 가져와 사용할 수 있어 페이지를 동적으로 구현 가능.

-npm install ejs

문법
설명
<% %>
흐름 제어문 ex) <% if(list %>
<%= %>
변수 값
<%- include(‘view의 상대주소‘) %>
다른 view 파일을 불러옴

 

+사담

진짜 php와 html 만을 사용하다가 갑자기 node.js 로 넘어와 처음 배웠을 때의 그 감정이 아직도 생생하다. 내가 제대로 이해하는 게 맞는 건지 매번 의문이 들었고 구글링을 해도 모르는 용어 투성이였다. 그만큼 node.js는 web 부분에서 삽질을 가장 많이 하고 혼자서 공부도 가장 많이 했던 부분이다.

npm과 express 를 머릿속에 이해하는 데에도 시간이 오래 걸렸고 전체적으로 node.js를 구동시키고 코드를 작성하는 기본 부분에서도 정말정말 오래 걸렸다. 이해하는 데에도 시간이 많이 걸렸지만 방명록은 한달 이상 계속 붙잡으면서 만들었던 것 같다. 적어도 2주 동안은 하루에서 절반 이상은 방명록을 붙잡고 실습했던 기억이 난다 ㅜㅜ

728x90
반응형