Coding Language/Javascript

딥다이브 3. 자바스크립트 개발 환경과 실행 방법

Young's Today 2023. 5. 1. 22:30

3.1 자바스크립트 실행 환경

 

자바스크립트 엔진

  • 모든 브라우저는 자바스크립트를 해석하고 실행할 수 있는 자바스크립트 엔진을 내장
  • Node.js도 자바스크립트 엔진을 내장하고 있음
  • 따라서 브라우저 또는 Node.js 환경에서 자바스크립트를 실행할 수 있음

 

브라우저와 Node.js 차이점

  • 브라우저는 HTML, CSS, 자바스크립트를 실행해서 웹페이지를 브라우저 화면에 렌더링하는 것이 주된 목적
  • 파일을 생성하고 수정할 수 있는 파일 시스템을 제공하지 않음

[예시] 파싱된 HTML 요소를 선택하거나 조작하는 기능의 집합인 DOM API를 기본적으로 제공

  • Node.js는 브라우저 외부에서 자바스크립트 실행 환경을 제공하는 것이 주된 목적
  • 파일을 생성하고 수정할 수 있는 파일 시스템을 제공

[예시] 브라우저 외부에서 자바스크립트 개발 환경을 제공하는 것이 목적이므로 DOM API 제공하지 않음

 

3.2 Web Browser

 

개발자 도구

  • 크롬 브라우저가 제공하는 개발자 도구(Dev Tools)는 웹 애플리케이션 개발에 필수적인 강력한 도구
  • 개발자 도구는 브라우저에 기본 내장되어 있으므로 별도로 설치할 필요가 없음

개발자 도구의 단축키

운영체제 단축키
window F12 또는 Ctrl+Shift+I
macOS Command+Option+I

개발자 도구의 기능

패널 설명
Elements 로딩된 웹페이지의 DOM과 CSS를 편집해서 렌더링된 뷰를 확인 가능
Console 로딩된 웹페이지의 에러를 확인, 자바스크립트 소스코드에 작성한 console.log 메서드의 실행결과 확인 가능
Sources 로딩된 웹페이지의 자바스크립트 코드를 디버깅 가능
Network 로딩된 웹페이지에 관련된 네트워크 요청(request)정보와 성능 확인
Application 웹 스토리지, 세션, 쿠키를 확인하고 관리 가능

 

콘솔 (console)

  • 개발자 도구 Console 패널은 자바스크립트 코드에서 에러가 발생해 애플리케이션에 정상적으로 동작하지 않을 가장 우선적으로 살펴봐야 하며 에러가 발생한 경우가 아니더라도 콘솔은 매우 유용함
  • 구현 단계에서 디버깅을 실행하는 것보다 간편하게 코드의 실행 결과를 확인하면서 개발을 진행하기 위해 console.log 메서드를 사용하는 경우가 많음
  • 콘솔은 자바스크립트 코드를 직접 입력해 그 결과를 확인할 수 있는 REPL(Read Eval Print Loop: 입력 수행 출력 반복) 환경으로 사용할 수도 있음

[예시]

1+2
// 3

Math.max(1,2,3)
// 3

 

브라우저에서 자바스크립트 실행

  • HTMl 파일을 로드하면 자바스크립트 코드를 실행할 수 있음

[예시] 아래 코드를 입력하고 브라우저에서 실행

< !DOCTYPE html >
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Counter</title>
  </head>
  <body>
    <div id="counter">0</div>
    <button id="increase">+</button>
    <button id="decrease">-</button>
    <script>
      // 에러를 발생시키는 코드: 선택자는 'counter-x'가 아니라 'counter'를 지정해야 함
      const $counter = document.getElementById("counter-x");
      const $increase = document.getElementById("increase");
      const $decrease = document.getElementById("decrease");

      let num = 0;
      const render = function () {
        $counter.innerHTML = num;
      };
      $increase.onclick = function () {
        num++;
        console.log("increase button click", num);
        render();
      };
      $decrease.onclick = function () {
        num--;
        console.log("decrease button click", num);
        render();
      };
    </script>
  </body>
</html>

위의 코드를 실행한 후 + 혹은 - 버튼을 클릭하면 에러가 발생하며 개발자 도구의 콘솔에서 에러를 확인할 수 있음

아래와 같이 코드를 수정한 후 다시 실행

< !DOCTYPE html >
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Counter</title>
  </head>
  <body>
    <div id="counter">0</div>
    <button id="increase">+</button>
    <button id="decrease">-</button>
    <script>
      // 에러를 발생시키는 코드: 선택자는 'counter-x'가 아니라 'counter'를 지정해야 함
      const $counter = document.getElementById("counter");
      const $increase = document.getElementById("increase");
      const $decrease = document.getElementById("decrease");

      let num = 0;
      const render = function () {
        $counter.innerHTML = num;
      };
      $increase.onclick = function () {
        num++;
        console.log("increase button click", num);
        render();
      };
      $decrease.onclick = function () {
        num--;
        console.log("decrease button click", num);
        render();
      };
    </script>
  </body>
</html>

개발자 도구의 콘솔에서 확인하면 정상적으로 작동하는 것을 확인

 

디버깅

  • 디버깅은 모든 소프트웨어에서 소스 코드의 오류 또는 버그를 찾아서 수정하는 과정
  • 소프트웨어가 예상대로 작동하지 않으면 컴퓨터 프로그래머는 오류가 일어나는 원인을 알아내기 위해 코드를 분석함
  • 디버깅 도구를 사용해 소프트웨어를 제어된 환경에서 실행하고 코드를 단계 별로 확인하여 문제를 분석하고 수정함

https://aws.amazon.com/ko/what-is/debugging/

 

디버깅이란 무엇인가요? - 디버깅 설명 - AWS

컴퓨터 프로그래밍은 추상적이고 개념적인 활동인 만큼, 버그와 오류가 발생하기 마련입니다. 컴퓨터는 전자 신호의 형태로 데이터를 조작합니다. 프로그래밍 언어는 사람이 컴퓨터와 더 효율

aws.amazon.com

https://developer.chrome.com/docs/devtools/

 

Chrome DevTools - Chrome Developers

Chrome DevTools is a set of web developer tools built directly into the Google Chrome browser.

developer.chrome.com

[예시] 위의 예시에서 사용했던 코드의 디버깅

$counter 변수의 값이 null인지 확인해보고 null 이라면 이유를 알아내서 에러 발생 원인을 제거함

에러 발생한 코드 왼쪽에 라인 번호를 클릭해서 중단점 걸고 재클릭하면 디버깅 모드로 들어감

 

3.2 Node.js

 

Node.js 소개

  • 2009년 라이언 달이 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경을 발표함
  • 브라우저에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서 동작시킬 수 있는 자바스크립트 실행 환경

npm 소개

  • 자바스크립트 패키지 매니저로 Node.js에서 사용할 수 있는 모듈들을 패키지화해서 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI (command line interface)를 제공
  • 자신이 작성한 패키지를 공개할 수 있고, 필요한 패키지를 검색해서 재사용할 수 있음

Node.js 버전

  • LTS version - 장기적으로 안정된 지원이 보장된 버전
  • Current version 최신 기능을 제공하며 업데이트가 지속적으로 진행되는 버전

Node.js 설치

Node.js 홈페이지에 접속해서 원하는 버전을 선택한 후 다운로드 진행되며 아래 경로에 다운됨

https://nodejs.org/en

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

Node.js 설치경로

운영체제 설치경로
window C:\Program Files\nodejs\node.exe
macOS \usr\local\bin\node
  • 설치 확인을 하기 위해서 아래 명령어 실행
node -v // node 버전 확인 명령어
npm -v // npm 버전 확인 명령어

Node.js REPL

  • REPL (Read Eval Print Loop)을 사용하면 간단한 자바스크립트 코드를 실행해 결과 확인 가능

Node.js 실행을 위해서 터미널/명령 프롬프트 입력

$node

자바스크립트 파일 실행을 위해서 터미널/명령 프롬프트 입력

$node index.js
// $node 입력 후 파일 이름 입력

REPL 종료 하기위해서 터미널/명령 프롬프트 입력

Ctrl + C 키를 두 번 입력

 

3.4 Visual Studio Code

 

비주얼 스튜디오 코드 설치

  • 비주얼 스튜디오 코드는 마이크로소프트가 마이크로소프트 윈도우, macOS, 리눅스용으로 개발한 소스 코드 편집기
  • 브라우저 콘솔 또는 Node.js의 REPL에서 자바스크립트 코드를 실행할 수 있지만 비주얼 스튜디오 코드와 같은 코드 에디터를 사용해서 코드 자동 완성, 문법 오류 감지, 디버깅, 깃 연동 등 편리한 기능 활용 가능
  • VS Code 홈페이지에 접속하여 프로그램을 내려받아서 설치할 수 있음

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

 

내장 터미널

  • 유닉스 기반의 대형 컴퓨터에서 사용자들이 컴퓨터에 접속하기 위해 사용했던 단말기로, 요즘에는 컴퓨터를 직접 제어하기 위해 사용하는 소프트웨어를 뜻함

내장 터미널에서 실행하기 위한 단축키

Window/Linux macOs
Ctrl + ` Ctrl + `

[예시] VS Code 실행한 다음 적당한 위치에 프로젝트 폴더 생성한 후 자바스크립트 파일 생성

const arr = [1, 2, 3];
arr.forEach(console.log)

// 출력
1 0 [ 1, 2, 3 ]
2 1 [ 1, 2, 3 ]
3 2 [ 1, 2, 3 ]

 

Code Runner 확장 플러그인

  • Code Runner 확장 플러그인을 사용하면 Vs Code의 내장 터미널에서 단축키를 사용해 Js를 비롯해 다양한 프로그래밍 언어로 구현된 소스코드를 간단히 실행 가능
  • 마켓플레이스에서 다운로드해서 설치할 수 있음

현재 표시 중인 자바스크립트 파일 실행 단축키

Window macOS
Ctrl+Alt+N Control+Option+N

[예시] 아래 코드를 입력한 후 실행하면 에러가 발생

const arr = [1, 2, 3];
arr.forEach(alert)

// 출력
arr.forEach(alert)
            ^
ReferenceError: alert is not defined

  • 브라우저에서 알림창을 띄우는 alert 함수는 브라우저에서만 작동하는 클라이언트 사이드 web API 이므로 브라우저 환경에서만 유효
  • 브라우저와 Node.js 환경 모두에서 실행 가능한 ECMAScript 표준 빌트인 함수와 브라우저 / Node.js 환경 각각에서만 실행 가능한 함수가 다르므로 유의

 

Liver Server 확장 플러그인

  • Live server 확장 플러그인을 사용하면 소스 코드를 수정할떄 마다 수정 사항을 브라우저에 자동으로 반영해주기 때문에 편리하게 작성 가능
  • 설치 후 가상 서버 가동 버튼을 클릭하면 브라우저에 HTML 파일이 자동 로딩되며 이후 소스코드를 수정하면 수정 사항이 자동으로 반경됨

[예시] 아래 코드를 작성한 후 Go Live 버튼을 누르면 실행

<!DOCTYPE html>
<html>
  <body>
    <script src="index.js"></script>
  </body>
</html>