자바스크립트) 소개

hhhzeong·2023년 9월 5일
0

자바스크립트?

  • 웹페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어
  • 작성된 프로그램을 스크립트라고 부름 (웹페이지를 불러올 때 스크립트는 자동실행)

자바스크립트 실행

  • JS 엔진 프로그램이 있으면 JS가 동작할 수 있음
  • 동작 과정
    1. 파싱 : 엔진이 스크립트를 읽음
    2. 컴파일 : 읽은 스크립트를 기계어로 전환
    3. 실행 : 기계어로 전환된 코드 실행

브라우저에서 JS로 할 수 없는 일

  • 웹페이지 내 스크립트는 디스크에 저장된 임의의 파일 읽기, 쓰기, 복사, 실행에 제약
    -> 운영체제가 지원하는 기능을 브라우저가 못 쓰게 하기 위함

  • 모던 브라우저를 사용하면 파일은 다룰 수 있는데 접근은 제한되어 있음
    -> 유저가 브라우저 창에 파일을 끌어다 두거나 인풋 태그를 통해 파일을 선택할 때 같은 특정한 상황에만 파일 접근을 허용

  • 카메라, 마이크 같은 디바이스와 상호 작용하려면 사용자의 명시적 허가 필요

  • 브라우저 내 탭과 창은 대개 서로의 정보를 알 수 없
    -> js를 통해 한 창에서 다른 창을 열 때는 예외 ( 근데 도메인, 프로토콜, 포트가 다르면 페이지 접근 불가)
    => 동일 출처 정책(same origin policy) 이 정책을 피하려면 두 페이지는 데이터 교환에 동의해야 하고 동의와 관련된 특수 js코드들 포함하고 있어야 함

    위와 같은 제약들은 사용자의 보안을 위해 만들어짐

  • 자바스크립트를 이용하면 페이지를 생성한 서버와 정보를 쉽게 주고 받을 수 있
    -> 타 사이트나 도메인에서 데이터를 받아오는 것은 불가능 가능할지라도 http 헤더 등을 이용하여 원격 서버에서 명확히 승인을 해줘야 함
    => 보안을 위해 사용


브라우저에서 JS로 할 수 있는 일

  • js는 메모리나 cpu같은 저수준 영역의 조작은 허용 하지 x
  • js의 능력의 실행 환경에 상당한 영향을 받는데 노드js 환경에선 임의의 파일을 읽거나 쓰고, 네트워크 요청을 수행하는 함수를 수행
  • 브라우저 환경에서 웹페이지 조작, 클라이언트와 서버의 상호작용에 관환 모든 일을 할 수 있
    페이지에 새로운 html 추가, 기존 html 혹은 스타일 수정
  • 사용자 행동에 반응(마우스 클릭, 키보드 키 눌림 등)
  • 네트워크를 통해 원격 서버에 요청을 보내거나, 파일 다운로드, 업로드( ajax, comet과 같은 기술 사용)
  • 쿠키 가져오기, 설정
  • 유저에게 질문 건네기, 메세지 보여주기
  • 클라이언트측에 데이터 저장하기 (로컬 스토리지)

강점

  • html,css와 완전 통합
  • 간단한 일을 간단하게 처리
  • 모든 주요 브라우저에서 지원하고 기본 언어로 사용됨
  • 브라우저 인터페이스를 만들 때 가장 널리 사용
  • 서버나 모바일 앱 등을 만드는 것도 가능

트랜스 파일

  • 프로젝트마다 요구사항이 천차만별이라 브라우저에서 실행 되기 전 자바스크립트로 트랜스파일 할 수 있는 새로운 언어들이 등장
  • 최신의 도구을 사용하면 트랜스파일을 빠르고 명확하게 수행할 수 있음
  • 최신 도구는 자바스크립트 이외의 언어로 작성한 코드를 보이지 않는 곳에서 js로 자동 변환
    • coffee스크립트 : js를 위한 syntactic sugar , 짧은 문법을 도입하여 명료하고 이해하기 쉬운 코드를 작성
    • 타입 스크립트 : 개발을 단순화 하고 복잡한 시스템을 지원하려는 목정으로 잘의 명시화에 집중
    • flow : 자료형을 강자, 타입스크립트와는 다른 방식
    • dart: 모바일 앱과 같이 브라우저가 아닌 환경에서 동작하는 고유의 엔진을 가진 독자적 언어

요약

  • 브라우저에서만 쓸 목적으로 고안된 언어지만 지금은 다양한 환경에서 쓰임
  • 오늘날 js가 브라우저 환경에서 가장 널리 사용되는 언어로 자리매김
  • html.css와 완전한 통합 가능
  • js로 트랜스파일을 할 수 있는 언어가 많음, 각 언어마다 고유한 기능을 제공,
profile
어서오세요.

0개의 댓글