Node.js (노드JS) 시작하기

Node.js란? 학습의 어려움

 

공식 웹사이트에서도 Node.js는 

JavaScript 엔진으로 빌드된 

JavaScript 런타임입니다-

라는 것을 강조해서 설명하는

인상을 받습니다.

 

아마 Node.js 측도 이게 무엇이냐?

프로그래밍 언어냐? 프레임워크냐?

무슨 런타임이냐? 라는 질문을

지금도 엄청 많이 듣고 있지 않을까 싶습니다.

 

웹프로그래밍에 입문하는 초보 학습자의

입장에서 보면 Node.js는 그냥

하나의 프로그래밍 언어입니다.

 

 

그런데 이 내용을 깊게 파고 들어가면

이것이 자바 언어처럼 오리지날

프로그래밍 언어는 아니고,

웹브라우저에서 독립한 런타임

환경이라는데 프로그램이면

프로그램이지 런타임은 또 무엇이고

노드 버전관리자(nvm)나

노드 패키지관리자(npm)는

또 무엇이며, 객체라는게 나오고

등등등... 꼬리에 꼬리를 무는

의문점들이 생겨서 머리가

무거워지기 시작해옵니다.

 

거기다가 이벤트 드리븐 (event driven)

방식의 콜백(Callback) 함수가 나오면

이제 기초가 얕은 초보자들은

한계점에 다다르게 됩니다.

 

과거 C언어밖에 선택이 없었던

시절에 포인터가 나오기 전까지는

그럭저럭 따라가다가 포인터와

메모리 관리 부분에 도달해서

'아~ 나는 이 길이 아닌가벼~'

라고 이탈한 많은 학생들이

기억이 납니다.

 

웹프로그래밍에 입문하면

최초에는 HTML, CSS 이런 것들을

신나게 배우지만 어느 시점 이상이

되면 결국 컴퓨터 구조와 네트워크

시스템에 대한 이해없이는

진행이 어려워짐을 느낍니다.

 

사실 어려운 단계까지 간 것 만으로도

상당히 노력을 한 것 입니다.

많은 경우 거기에 도달하지도

못한채 포기하게 됩니다.

 

컴퓨터 공학도 시대가 흐르면서

상당히 문턱이 낮아지고 있지만

여전히 컴퓨터의 작동 원리가

그 밑바탕에 깔려있기 때문에

수박겉핥기 식으로는 한계가 있습니다.

 

여기서 하려는 이야기는

일단 Node.js는 많은 고인물(?)들이

쉽다고 이야기함에도 불구하고

초보자들이 만만하게 시작하기엔

문턱이 높다는 점 입니다.

 

강의에서는 Node.js의 장점으로

자바스크립트 언어 하나만으로

프론트엔드와 백엔드를 둘다

가능하기 때문에 이를 배우면

바로 풀스택이 될 것 같이 말하지만

그것은 수십년간 컴퓨터 기술을

갈고 닦은 그들의 관점이지요.

 

위에서 몇개를 나열했지만

Node.js가 사용하는 프로그래밍의

개념과 이해도는 꽤 난이도가 있습니다.

 

런타임을 제대로 이해하려면 컴파일과

가상머신을 이해해야 하고

프로토타입은 객체지향을 학습한

사람에게도 어려운 개념입니다.

서버 - 클라이언트 구조, 이벤트 드리븐,

비동기 처리, 콜백 함수 등등...

어쩌면 C언어의 포인터보다

훨씬 더 학습에 시간이 걸리게

될지 모르겠습니다.

 

이것들을 처음부터 다 알고 쓰는게

아니겠지만 결국은 완벽한 이해를

목표로 잡아야 합니다.


Node.js 의 특징

간단히 정리해 두겠습니다.

 

1. 자바스크립트 기반이다.

 

이는 프론트엔드 기술자들이

밴엔드 기술도 빠르게 습득할 수

있다는 것을 뜻합니다.

 

JS가 90년대에 출시되었을 때

이 정도로 영향력이 큰 언어가

될 줄 알았던 사람도 드물었을 겁니다.

 

당시에는 전통의 함수형 프로그래밍보다

객체지향 프로그래밍이 컴퓨터 기술의

미래라고 다들 생각했었습니다.

 

확실히 객체지향 프로그래밍은

지금도 매력적인 언어입니다.

 

고인물들은 자바 스크립트 개발자라고

말하면 좀... 실력이 없어 보이는게

아닌가? 적어도 C계열이나 자바를

메인으로 다뤄야 프로그래머라고

생각했던 시절도 있다고 합니다.

(지금도 아키텍쳐가 되기 위해서는

C계열의 근본이 있어야 한다는

주장이 많이 있습니다.)

 

하지만 지금 자바스크립트는

맥가이버 칼 처럼 무엇이든

가능한 도구가 되버리고

방대한 커뮤니티와 라이브러리를

구축했기 때문에 위상이 높아졌고

앞으로도 전망이 좋습니다.

 

파이썬이나 자바스크립트 처럼

강력한 오픈소스 커뮤니티가

뒷받침 하는 언어들은 계속해서

발전하게 됩니다.

어쩌면 지금의 프로그래머들이

평생에 걸쳐서 사용하게 될지도 모르죠.

 

2. 논블로킹 IO 이벤트 드리븐 방식이다.

 

 Node.js는 동시에 수많은 작업을

처리할 수 있도록 설계되었습니다.

 

이벤트 드리븐이란 쉽게 말하면

윈도우의 멀티태스킹과 비슷합니다.

 

윈도우를 사용할 때 창 한쪽에는

인터넷을 하면서 유튜브나

넷플릭스도 동시에 보며

텔레그램이나 디스코드 같은

메신저도 동시에 사용할 수 있습니다.

 

PC를 구매할 때는 CPU를

하나만 사는데도 한번에

여러 작업이 가능한 것은

윈도우 운영체제가 여러개의

작업을 시간을 쪼개서 동시에

처리하고 있기 때문입니다.

 

CPU의 사양이 2기가 3기가

이런 것은 1초에 처리할 수 있는

명령어의 수를 의미합니다.

이는 꼭 CPU의 클럭수에 좌우되지는

않지만 2013년 모델인 인텔 코어 i7 4770K

3.9GHz 기종은 1초에 1300억개의 명령어를

처리할 수 있다고 합니다.

 

그렇습니다. 한대의 PC에 여러개의

프로그램을 실행해도 1초에

수천억개의 연산이 가능한

CPU가 동시에 여러개의 작업을

앞에서 뒤에서 수행하고 있는 것입니다.

 

사용자 입장에서 보면 멀티태스킹

이라고도 하고 CPU관점에서는

동시에 여러개의 프로세스를

처리하고 있는 것 입니다.

 

이벤트 드리븐(Event Driven)이란

말도 좀 어려운데 그냥 쉽게

사건, 일이 주도하는 것으로

여기서 사건이란 클라이언트가

Node.js에 요청하는 것과

서버의 작업이 끝나는 것과

같은 처리입니다. 당연히

입출력을 막지 않아야(I/O Blocking)

일이 일어나는데로 응답이 되겠죠?

 

초창기 서버들은 클라이언트에게서

어떤 요청을 받으면 그 요청을 처리할 때

까지 다른 일을 하지 못했습니다.

그러다 보니 요청이 폭주하면

마치 점심시간에 주문이 폭발한

식당처럼 한참을 기다려야 밥이 나옵니다.

 

사실 프로그램은 순차적으로

작동하는게 기본원리입니다.

함수형 프로그램들 보면

소스코드의 위에서 부터 아래까지

순차적으로 내려옵니다. 분기문이나

루프를 프로그램을 제어하는

기본 장치로 사용하는 것이죠.

(과거의 goto 문에서 시작)

 

그런데 Node.js는 들어오는 요청을

앞에서 동시에 다 받으면서

시간이 걸릴 것 같다 싶으면

뒤의 작업장으로 보냅니다.

보통은 I/O작업 - 파일을 읽는다거나,

쓴다거나 하는 것들이 시간이

더 걸리기 때문에 뒤로 보내죠.

 

물론 Node.js 는 싱글 스레드를

사용하기 때문에 실제로는

하나의 Node.js 서버가

시간을 쪼개서 처리합니다.

 

이벤트 드리븐 방식은 원래부터

존재하던 프로그래밍 방식으로

게임 루프도 비슷한 로직입니다.

 

파이썬 게임만들기 1 | 파이게임 설치, 게임창 띄우기 | 게임 루프 , 이벤트 핸들링

 

파이썬 게임만들기 1 | 파이게임 설치, 게임창 띄우기 | 게임 루프 , 이벤트 핸들링 | 파이게임 개

파이게임은 파이썬의 멀티미디어 라이브러리로 이 모듈을 설치하면 파이썬으로 게임을 만들 수 있다. 멀티미디어에 최적화된 SDL(Simple DirectMedia Layer)를 파이썬으로 감싸는(Wrapper) 라이브러리이

digiconfactory.tistory.com

많은 사람들의 요청을 받고 처리 시간을

예측하고 그 상태를 유지해서

클라이언트에게 돌려주고

또 클라이언트에게 추가 요청을

받을 수도 있는 방식의 장점을

가장 잘 살린 것 입니다.

 

한가지 단점에 대해서는 모두

공통적으로 이야기하는데

CPU intensive work (CPU에

부담을 많이 주는 작업)에는

매우 부적합 합니다.

 

Node.js의 주된 책임은 빨리

요청을 처리해주는 것에 있지

CPU자원이 많이 소요되는 일을

붙잡고 않아있는 것에는

별로 어울리지 않다는 점입니다.

 

해서 일반적으로 Node.js 가 어울리는

프로그램은 다음과 같습니다.

 

- 채팅 앱 : 작은 텍스트를

자주 쳐내야 하는 작업

 

- 게임 서버:  MMO RPG 같이

빠른 응답속도로 여러개의 요청을

동시에 처리해야 하는 경우

 

- 협력이 필요한 환경: 문서 쪽에서

보면 노션 같이 협업하는 환경을

구축하기 위해 Node.js도 사용이 가능

 

- 광고 서버: 하나의 웹 페이지에서

여러개의 광고 요청을 보내는데

이런 작업의 처리에 적합하다.

 

- 스트리밍 서버: CPU 보다는 I/O를

많이 사용하는 스트리밍에 적합하다.

 

*******

 

왜 node.js가 비동기 방식인지

이해할 수 있을 것 입니다.

 

Node.js는 한가지 일을 진득하게

하는 성격이 아니라 여러개의 일을

빨리 쳐내는 것에 특화되어 있습니다.

 

그러기 위해서는 비동기 방식으로

일을 해야 합니다.

 

Node.js 에 필요한 사전 지식

Node.js의 학습자에게 권장되는

사전 지식은 좀 있습니다.

 

1. 자바스크립트

 

- 요새는 JS가 만병통치약이라고는

하는데 엄밀히 말하면 자바스크립트만으로

프로그래밍의 밑바닥 원리까지

100% 이해하긴 어렵습니다.

 

이것은 모두의 공통으로 어떤 한가지

언어만으로 모든 컴퓨터 프로그래밍을

마스터하는 것은... 일반인에겐 쉽지 않습니다.

 

순수 객체지향 프로그래밍이고

컴파일 언어인 자바 언어 정도는

알아야 좋지 않을까 싶습니다.

(JS만으로 풀스택이 될 수 있다더니

결국은 다 할 줄 알아야 한다...)

 

2. HTML, CSS

 

- 웹프레임워크나 부트스트랩에서

HTML과 CSS가 일부 혹은 상당부분

구현된 상태를 사용하기 때문에

완전 달인까지는 아니더라도

타인이 제작한 코드를 편집할 정도의

실력은 필요합니다.

 

HTML 코드는 아직도 좀 뭐랄까

디자인 적인 요소를 표현하는

마크업언어라서 그런지 굉장히

보기에 피곤합니다.

 

백엔드 언어는 로직으로 돌아가는데

프론트엔드는 디자인적인 요소입니다.

<div class="main_menu"> 이런 박스를

만들기 위해서 하나의 웹페이지에 최소

수십에서 수백개의 동일한 태그가

들어가는데 좀 예술적인 면도 있고

노가다 적인 작업도 있고...

 

이제는 UI디자이너라는 직업까지는

아니더라도 회사의 직무 정도로는

충분히 인정받고는 있는 것 같은데

과거 인터넷의 초창기에는 IT기술자들이

이런 UI개념 없이 혼자서 다 만들었습니다.

 

그러다 보니 이 사람들은 공대를 졸업했지

디자인이나 유저 인터페이스 공학

이런 것을 전공하지 않은 사람들입니다.

당연히 디자인 적인 부분에 발전이 느렸습니다.

 

우리나라만 그런게 아니라 세계적인

현상입니다. 유튜브에서 몇년전(한 2016년이었나?)

responsive web design 도입을 축하하는

미국IT업계 세미나 영상을 봤는데

반응형 레이아웃을 구현할 정도의 기술과

컴퓨터 자원은 이미 2000년대 초반에도

충분히 있었습니다.

 

그런데 HTML 표준이 반응형으로

바뀌기 까지 15년 이상이 걸렸다고 합니다.

진짜 지독하지요. 옛날에 우리 야후나

네이버 메인화면을 보면 투박하기

그지 없었습니다.

 

네이버도 모바일 버전을

지금처럼 정착시킨 것이

그리 오랜 역사는 아닙니다.

 

그래서, 모바일 웹이 대세가 되니까

그제서야 HTML/CSS 표준이 조금

쓸만해 진 것이지요.

 

또 HTML5의 캔버스 객체는 그 자체의

멀티미디어 기능이 강화되는 추세로

자바스크립트로 조작하여 웹의 퀄리티를

높이는데 필수적인 요소가 되고 있습니다.

 

여기에다 부트스트랩, 제이쿼리 등

각종 프레임워크가 난립하다 보니까

이게 편리하게 개발하라고 나온 것들인데

학습시간 대비 효율도 따지게 되고

거기다가 구글 최적화 전략(SEO)까지

더해져서 이제는 많이 복잡합니다.

 

고인물들은 이런 과정을 상당히

겪었겠지만 새로 시작하는 학습자들은

학습하는 시간이 금인 것을 알고

이 모든 것을 다 배우려는 것보다는

시대적인 흐름에 따라가면서

지금도 필요하다 싶은 과거의 기술들도

들춰볼 필요도 있습니다.

 

무슨 말이냐면 지금 인기있는

프레임워크를 메인으로 사용하면서

필요한 경우 과거의 기술도 참고할

필요가 있습니다.

(프레임워크 VS 프로그래밍 원리는

헤묵은 노쟁인데 시간을 들인만큼

잘하자는 취지라 할 수 있습니다)

 

3. 네트워크 지식

 

네트워크의 지식적인 부분은

웬만하면 운영체제와 관련이 있습니다.

 

네트워크 지식이라는게

결국은 서버인 리눅스 운영능력과도

직결되지 않을까 싶습니다.

 

윈도우 운영체제는 MS 플랫폼을

제외하고 대부분 클라이언트 중심으로

사용되어 왔기 때문에 서버적으로

접근하는게 불편하기도 하고

잘 이해도 안됩니다.

 

해서 Node.js는 윈도우에도 설치가

가능하지만 웬만하면 리눅스 시스템에

설치해서 사용하는 것을 권장합니다.

 

요즘같은 시대에는 웹앱을 하나씩

설정하는 것 보다는 Docker로

배포하는게 효율적이기 때문에

어차피 리눅스에서 사용해야 합니다.

 

윈도우10에서도 리눅스용 하위시스템인

WSL2를 설치해서 사용가능하기

때문에 가상머신(Vmware)에 OS를

설치하지 않아도 되는 시대입니다.

 

리눅스는... 프로그래밍을 배우는

사람에겐 그렇게 어렵지 않습니다.

GUI환경이 나쁘다는 것은 아니지만

그것은 프로그래머의 관점에서 보면

컴퓨터를 전혀 모르는 일반인들을

위한 인터페이스입니다.

 

프로그래밍과 IT관리자에게는

GUI보다 CLI가 더 효율적입니다.

또 셸 스크립트 자체가 인터프리터

언어로써 일상의 업무 처리 등에

생산성을 높여줍니다.

그래서 1970년대 유닉스 셸이 나오고

수십년이 지난 지금까지도 많은

사람들이 사용하고 있는 것 입니다.

 

암튼 네트워크 지식은 대부분

리눅스 운영체제를 관리하면서

얻게 된다는 점 입니다.

그 리눅스에 Node.js를 구현하는거죠.

 

4. 웹에 관한 지식

 

웹은 누구나 다 사용하는 것이지만

프로그래머는 내부 구조를

정확하게 이해할 필요가 있습니다.

 

물론 웹은 무척이나 복잡한 구조라서

해도해도 어렵습니다.

웹 프로그래머가 담당하는 부분은

Database를 포함한 웹서버를 구현하고

프론트엔드의 클라이언트가 제대로

작동할 수 있도록 하는 것으로

이 과정에서 또 많은 도구와 지식이

필요합니다만, 다행히 클라우드 컴퓨팅

시대라서 부담이 적습니다.

 

클라우드 서비스는 국내에도

네이버나 KT가 제공하고 있는데

약간 국내 기업 B2B나 일부 콘텐츠에

특화되지 않았나 싶고 소규모 기업의

솔루션으로는 역시 AWS가 저렴하기도

하고 쓸만합니다.

 

무엇보다 AWS는 문서화가 잘되어 있고

레퍼런스가 많아서 초보 학습자에게

한줄기 빛이 될 수 있습니다.

 

AWS 국내 리전 서버가 생긴지

한 2년 남짓 된 것 같은데

속도와 가성비가 괜찮습니다.

 

대신 AWS는 본인이 공부를

진짜 많이 해야 하죠.

서비스가 워낙 다양하고

쓴 만큼 지불하는 방식이라서.

 

가성비 서버인 라이트세일에서도

Node.js가 설치가 가능합니다만,

AWS 특징이 서버에 뭐 하나

추가하면 돈이 나가는 방식이라서

그 프로젝트의 수익성을 잘 산정하고

진행할 필요가 있습니다.

 

AWS는 잘 쓰면 저렴하지만

잘 모르고 쓰다가 피토하는 경우가

종종 있다고 알려져 있습니다.

이는 돈과 직결되는 부분이기 때문에

반드시 공부를 충분히 하고

예측 가능한 선에서 시작합니다.

 

사실 서버를 구축하는 클라우드

컴퓨팅 서비스는 대체로 비쌉니다.

별거 아닌 서비스도 상업용이니까요.

 

하지만 그럼에도 불구하고

AWS 나 구글 클라우드 등은 물론이고

국내 클라우드 서비스들을 열심히

공부해야 하는 이유는 분명합니다.

그들이 개발한 최신의 서비스를

바로 나의 웹앱에 접목시키면

사이트의 조회수가 늘어날 것이고

그에 비례해서 수익성도 높아질 겁니다.

 

Node.js를 사용하는 이유도 비슷하지요.

나 혼자 모든 것을 개발하는게 아니라

클라우드 컴퓨팅 환경의 자원들을

적극 활용하기 위한 것 입니다.

 

*******

 

개발을 위한 지식은 이 정도가

필요하지 않을까 싶구요.

쓸만한 지식이야 많으면

많을 수록 좋겠지요~

 

부족한 부분이 있으면 Node.js를

공부하면서 하나씩 알아가면 되니까

좀 몰라도 한번 도전해 볼만합니다.

 

Node 설치 관련 사항

노드는 리눅스, 맥OS, 윈도우에

설치할 수 있습니다.

1. 윈도우10에서 설치

윈도우10에서 설치합니다.

 

NODE.JS(노드JS) 설치 및 테스트 완료하기 | 윈도우10

 

NODE.JS(노드JS) 설치 및 테스트 완료하기 | 윈도우10

NODE.JS (노드JS)는 Chrome V8 JavaScript 엔진으로 빌드된 오픈소스이며 크로스 플랫폼 자바스크립트 런타임 환경입니다. 노드JS를 사용하면 웹브라우저 밖에서 자바스크립트를 사용할 수 있어서 서버

digiconfactory.tistory.com

2. nvm 설치

리눅스 환경의 nvm 설치입니다.

아래 문서에서는 윈도우10에서

리눅스 커널을 사용하는 WSL2로

설치하였습니다.

 

기본적으로 리눅스 설치와

거의 같다고 보면 됩니다.

 

통합개발환경인 비주얼스튜디오코드의

설정까지 끝내면 됩니다.

 

노드 버전 매니저 NVM (Node Version Manager) 설치하기 - 윈도우10 WSL2

 

노드 버전 매니저 NVM (Node Version Manager) 설치하기 - 윈도우10 WSL2

nvm - 노드 버전 매니저 노드 버전 매니저는 노드JS의 버전 관리자입니다. 노드JS는 크롬 V8 JS엔진에서 동작하는 자바스크립트 런타임입니다. 비동기 이벤트 드리븐 방식의 런타임으로 동시에 여

digiconfactory.tistory.com

 

Hello World 테스트

Hello World는 항상 새로운 언어나

프레임워크를 시작할 때 찍어줍니다.

 

이게 은근히 발을 담군다는

의미를 가지고 있죠.

 

초보자라면 뭐 하나 삑사리가 나면

Node.js 하나 설치하는데도

몇시간이 걸릴 수도 있는데

일단 끙끙거리며 오랜시간을 들여

Node.js를 설치했다면 뭐라도

해봐야지이~ 라는 생각이 듭니다.

 

그럼 실제로 해봐야죠.

 

설치한 시스템에서 node를 입력하여

node interpreter 를 실행합니다.

인터프리터 - 번역기 라는 것은

운영체제로 따지면 셸하고 같은 겁니다.

 

node의 코어가 우리가 node에

보내는 명령어를 한줄 단위로

해석해서 처리해주기 때문에

번역기라고 부르는 겁니다.

 

컴파일러는 소스코드의 수백,수천줄도

싹다 모다서 일괄적으로 기계어로

번역하지만 인터프리터 개념은

코드 한줄을 읽고 그때그때

처리하는 개념입니다.

 

때문에 컴파일러 방식의 프로그램보다

속도는 떨어지지만 동적이라고 합니다.

동적(dynamic) 프로그램이라는 것은

유연성이 좋다는 말이기도 하죠.

이 정도 차이를 알고 접근한다면

나쁘지 않을 겁니다.

 

우선 사칙연산부터 해봅니다.

node로 시작하면 Welcome to Node.js

메시지와 함께 인터프리터가 나옵니다.

 

이 자체가 계산기 처럼 사용할 수 있습니다.

자바스크립트 문법을 따르기 때문에

+ - * / 의 사칙연산과 % 나머지 연산자를

사용해서 계산합니다.

 

node.js 사칙연산
node.js 사칙연산

 

Hello Node.js 도 찍어줍니다.

Console.log 가 표준 출력 함수입니다.

 

 

node를 종료하려면 .exit 를 입력합니다.

 

비주얼 스튜디오 코드에서 실행

 

다음은 비주얼 스튜디오 코드에서

js 파일을 만들어서 실행해보겠습니다.

 

아래와 같이 간단한 함수를

만들어 보겠습니다.

역시 자바스크립트 문법이죠.(당연히)

app.js 파일명으로 저장합니다.

 

function myHello(name){
    console.log('-> Hello '+name);
}

myHello('Node.js!');

 

파일이 있는 디렉토리에서

node 파일명으로 실행할 수 있습니다.

그냥 node를 치면 인터프리터로

진입하지만 파일명을 입력하면

node.js파일을 실행합니다.

node app.js
-> Hello Node.js!

 

*아래와 같은 코드를 실행하면

어떠 결과가 나올까요?

웹브라우저에서 실행하면

window 객체가 확인됩니다.

console.log(window);

허나 Node.js에는 에러가 납니다.

window가 정의되지 않았습니다.

웹브라우저의 JS 런타임에는

window라는 객체가 정의되어 있어서

이 객체를 통해서 각종 메소드를

사용할 수 있었습니다.

 

console.log(window);
            ^

ReferenceError: window is not defined
    at Object.<anonymous> (/home/kayken/nodejs/tut-1/app.js:8:13)

그런데 Node.js의 런타임에는

window 객체가  없습니다.

node는 서버사이드를 목적으로

개발되었기 때문에 윈도우가

불필요한 것이라 빼버린 것이죠.

 

window가 구동되는 것은 클라이언트

즉 사용자의 브라우저입니다.

브라우저를 서버에서 구동시켜봤자

별 소용이 없기 때문입니다.

 

그렇다면 Node.js에서는 무엇을

할 수 있을까?

아주 많은 것을 할 수 있습니다.

Node.js의 기능을 확장시켜주는

npm 패키지의 숫자는 최근 130만개가

넘었다고 합니다. 이들은 오픈소스이고요.

130만개의 기능 중에 골라 잡아

모듈로 설치하면 된다는 것이죠.

대부분은 객체의 형식으로 제공됩니다.

 

그러니까 웹의 클라이언트에서

할 수 있는 것과는 비교도 안되게

수도없이 많은 패키지의 기능을

사용할 수 있다는 뜻 입니다.

 

130만개라면 우리가 생각하는

거의 모든 패키지가 있다고

봐도 될 것 같습니다.

 

중요한 것은 앞으로도 계속

개발될 것이라는 것이죠.

 

지금은 오픈소스의 세계입니다.

 

웹브라우저에서 동작하는

자바스크립트와는 큰 차이지만

결국 웹은 서버와 클라이언트가

함께 동작하는 것이라서

이 기능을 서버와 클라이언트에

각각 어떻게 역할을 맡기도록

구현하는게 좋을까 그걸 고민하는게

프로그래머가 할 일입니다.

 

요약

이번 포스팅은 Node.js에 대해서

간단히 소개를 해봤습니다.

 

다음 포스팅에서는 코드적인 부분들도

더 다루어 보겠습니다.

 

원래 어떤 프로그래밍 언어든지

처음에 개요가 중요합니다.

사람들이 그것까지는 읽고

동영상 강의 듣다가 중간에

그만 두는 경우가 많은데

그건 어쩔 수 없습니다.

 

프로그램밍은 아무리 쉬워져도

쉬워지는 자체에 한계가 있습니다.

 

또 어느정도의 수리적 능력과

논리력이 필요하고 체력과

정신력도 필요합니다.

 

어떤 프로그래밍 학습과정이라도

한번에 다 끝내는 것은 쉽지않은데

기초를 지대로 다지지 않고

고급 주제로 나아가기가

어렵기 때문입니다.

 

해서 예전에 그 자바 배우는 학생들은

자바의 정석 같은 교재를 3회독 했다거나

뭐 그런 식으로 앞과 뒤를 반복해서

학습하면서 개념을 머리에 박았다는

이야기도 있습니다.

 

어느 정도는 각오를 하고

시도해보고 도전해본다면

언젠가는 이 모든 일들이

쉬워지는 날이 옵니다.

 

그래도 지금은 양질의 교재가 많고

유튜브 등 무료 강의가 많아서

마음만 먹는다면 정말 배우기

좋은 환경입니다.

 

과거를 돌아보면 라떼는 밖에

말할게 없는게 보통 사람들이

느끼는 것 일 겁니다.

 

투박한 C언어 책과 불친절한

JSP, PHP 책들에 의지하면서

무언가를 만들던 시대는 지나가고

이제는 뭐든 뚝딱 만들 수 있을 것

같은 시대를 견인해온 언어가

몇개가 있는데 그 중에 웹쪽은

Node.js 가 견인하고 있고

일반 어플쪽은 파이썬이 인기가 많습니다.

 

방대한 오픈소스 라이브러리 때문이죠.

 

기대를 가지고 Node.js를 배워도 좋습니다.

 

웹에서 무엇인가를 바로 구현할 수 있는 것이

바로 Node.js 이기 때문입니다.

 

쉬워보이지만 많은 것을 알고 있어야

제대로 사용할 수 있습니다.

 

 

자바스크립트 웹API

 

Window.alert() - Web API | MDN (mozilla.org)

 

Window.alert() - Web API | MDN

Window.alert() 메서드는 확인 버튼을 가지며 메시지를 지정할 수 있는 경고 대화 상자를 띄웁니다.

developer.mozilla.org

 

npm 블로그 공지사항

 

npm Blog Archive: So long, and thanks for all the packages! (npmjs.org)

 

npm Blog Archive: So long, and thanks for all the packages!

npmjs.com Status Support The npm blog has been discontinued. Updates from the npm team are now published on the GitHub Blog and the GitHub Changelog. So long, and thanks for all the packages! On September 29th, 2019, npm turned 10 years old and we all cele

blog.npmjs.org

공유하기

facebook twitter kakaoTalk kakaostory naver band