javascript

How does it works

자바스크립트를 기본적으로 chrome 브라우저에서 실행되는 script 언어로 시작하였으나, node.js 라는 런타임 환경이 나온 이후로 브라우저 밖에서도 javascript를 사용할 수 있게 되었다.

아무래도 브라우저 내에서 사용되던 언어인 만큼 window 라는 전역 object 가 context의 root 역할을 수행한다.

런타임 환경 내에서 실행되는 모든 변수는 window 라는 전역 객체에 그 상태가 기록되며, 브라우저에서 동작하는 성격상 브라우저의 창 즉, window 가 런타임 환경에서 최상위 root context 가 된다. 기본적으로 html 이라는 사용자가 보는 가시적인 페이지와 연동되기 위해 event 라는 개념을 사용하며, 사용자가 브라우저에서 하는 모든 활동은 event 를 발생시키며, 각 이벤트가 발생하면 수행되는 일련의 함수의 집합으로 프로그램이 구성된다.

이러한 event 를 듣고 수행하는 것들을 일컬어 event target 이라고 하며, 이러한 event target 으로는 root context 인 window 객체 이외에도 document, element 객체가 있다.

각 객체들은 addEventListener 함수를 통해 특정 이벤트가 발생할때 실행할 함수들을 등록할 수 있으며, 이를 통해 web page 와 사용자가 상호작용을 하게 된다.

또한, javascript runtime environment 인 node.js 는 각종 패키지들을 사용할 수 있는데, 여기서 node 는 실행하는 루트의 package.json 파일을 참조하여 노드 모듈을 참조하고 실행하며, 때문에 실행하는 위치의 root 에 package.json 파일이 있어야만 패키지들을 찾고 실행할 수 있기 때문에 이를 유의하여야 한다.

Javascript modules

npm 패키지를 사용하기위한 설정을 package.json 에 설정해 준다.

path alias 사용하기

package.json

1
2
3
4
5
6
7
8
9
10
11
{
"_moduleAliases": {
"@domain": "dist/domain",
"@infra": "dist/infra",
"@util": "dist/util",
"@common": "dist/common",
"@interfaces": "dist/interfaces",
"@utils": "dist/utils",
"@api": "dist/api"
}
}

Multithreading

Javascript 는 기본적으로 single thread 방식으로 동작한다.

즉, 하나의 프로세스 내에서도 하나의 단일 스레드 내에서 동작하는 것을 기본으로 한다.

하지만, 브라우저 내에서 데이터를 로드하면서 화면을 전환하거나 혹은 화려한 ui 를 그리는 도중에도 사용자와의 interaction 을 해서 편의를 높이는 등 다양한 부분에 있어 병렬처리에 대한 필요성이 대두되었으며, 브라우저는 Web Worker 라는 개념을 통해 병렬처리를 가능하도록 하였다.

web worker 는 현재 실행중인 main thread 와 병렬적으로 background thread 에서 특정 작업을 수행하여 병렬적으로 특정 task 를 수행할 수 있게 해 준다.

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×