그래도 우선 내가 지금까지 이해한 내용을 바탕으로 글을 작성해보자면
자바스크립트는 말 그대로 프로그래밍언어이다. 자바스크립트의 실행을 위해서는 코드를 실행시켜주는 수단이 필요한데 이것을 런타임이라고 한다. 웹브라우저에는 이러한 런타임이 포함되어있기 때문에 브라우저를 통한 코드의 실행이 가능하다.
예를 들어,
console.log('Hello World')
라는 코드의 실행을 위해서는 위 파일을 js파일로 저장 한 후 html의 script 태그 안에 불러와 브라우저에서 html파일을 열면 콘솔에 'Hello World'라는 문구가 찍힌다.
하지만 브라우저 없이 js를 실행할 수는 없을까?
node.js를 통해 가능하다. 브라우저가 없기 때문에 런타임을 따로 설치 후 사용해야 하는데 이 런타임이 바로 node.js이다. node.js는 터미널을 통해 실행한다.
브라우저를 통해 js를 실행시킬 때와 node.js를 통해 js를 실행시킬 때 차이가 발생하는데
예를 들어,
window.addEventListener('load', e => {
document.body.style.background='green';
})
라는 코드를 브라우저에서 실행시키면 초록색으로 꽉찬 화면이 나오지만, node.js를 통해 실행시키면 'window is not defined'라는 에러가 나온다. window라는 변수가 존재하지 않기 때문이다.
반대로 node.js에서는 실행이 가능하나 브라우저에서는 불가능한 것도 있다.
node.js는 구동하고 있는 컴퓨터의 저장매체에 파일을 기록하거나, 저장하는 것이 가능하다. 이러한 특징들을 이용해 주로 구현하는 것이 웹서버이고, 따라서 백엔드에서도 js의 사용이 가능하게 되었다.