7. 관련 개념[편집]
7.1. 표준[편집]
ECMAScript: 넷스케이프가 인터넷 상의 다양한 스크립트 언어를 하나로 묶기 위해 Ecma 인터내셔널에 제시하고 채택된 표준. 이 사양을 구현한 JavaScript 구현체로는 구글의 V8 엔진, 모질라의 SpiderMonkey, Microsoft의 Chakra 등이 있다. 실제로 JavaScript에만 적용되는 표준안이 아니라, Internet Explorer의 JScript나 Adobe Flash의 ActionScript의 표준이기도 하다. 2023년 2월 기준 ECMAScript 2022의 표준 (13판)까지 나와 있다.
7.2. 주요 라이브러리[편집]
jQuery: DOM Manipulating 라이브러리. 사실상 JavaScript 개발에 필수였던 라이브러리였으나 리액트, 앵귤러 등의 프레임워크의 생산성이 워낙 높다 보니 2010년대 후반부터는 사실상 레거시가 되었으며 아주 간단한 웹사이트에서만 쓰이고 안쓰는 추세다. 기본적으로 document.querySelectorAll('oooo')를 $('oooo')로 쓸 수 있는 등의 기능이 있다.
AngularJS: 구글에서 제작한 프론트엔드용 클라이언트 사이드 JavaScript 프레임워크. Angular 1으로도 불린다. 백엔드, 프론트엔드를 동시에 작업 할 수 있다. MongoDB, Express, AngularJS, Node.js를 함께 사용하여 MEAN Stack으로 많이 사용한다. Angular 2 이후로는 이건 TypeScript를 이용한다. 기본적으로 많은 기능들이 내재되어 있다.
React: Facebook에서 만든 프론트엔드용 오픈소스 라이브러리다.[35] 단방향 데이터 흐름과, Virtual DOM 개념을 도입한 UI 컴포넌트 라이브러리. 생산성이 높고, DOM 업데이트에 있어서 성능이 매우 빨라 동적인 웹 애플리케이션 구성에 유리하다. 그리고 이러한 동적 웹이 모던 웹 애플리케이션의 필수 요소가 되어버린만큼 출시 이후 꾸준히 점유율을 늘려가며 업계 표준 라이브러리 중 하나로 자리잡았다. 최근에는 React Hooks이라 불리는 메소드가 지원되면서 생산성이 더 좋아졌다. html로 뷰를 작성해야하는 Angular와는 다르게 JSX라는 문법을 지원하면서 JavaScript만으로 애플리케이션을 작성하는게 가능하다.
Vue.js: 중국계 미국인 에반 유가 만든 사용자 인터페이스를 만들기 위한 프론트엔드용 프레임워크이다. 굉장히 자유롭고 유연하게 추가 기능들을 불러올 수 있다는 특징이 있으나 추가 기능들을 무분별하게 사용하는 경우 안정성을 떨어뜨릴 수 있다.
Node.js: 브라우저 안에서만 작동하던 JavaScript를 브라우저 외의 환경에서 작동할 수 있게 만들어 준 런타임 환경이다.
Express.js: Node.js 환경을 기반으로 만들어진 웹 애플리케이션 프레임워크. 주로 JavaScript로 백엔드를 개발할 때 사용된다.
Deno: Node.js의 개발자 Ryan Dahl이 Node.js의 아쉬운점을 개선한 JavaScript 런타임 환경이다.
Svelte: Rich Harris가 2016년도 출시한 오픈소스 프론트엔드 웹 프레임워크이다.
7.3. 기타 라이브러리[편집]
Electron: GitHub에서 만든 HTML+CSS+Javascript 데스크톱 앱 프레임워크.
언더스코어: 리스트 해석, 고차 함수 집합 라이브러리. 홈페이지
Lo-Dash: 위의 언더스코어 라이브러리의 성능 개선 버전.
npm : Node Package Manager
HTML5shiv: Internet Explorer 6~8에서 HTML5가 동작하게 해 주는 JavaScript 파일이다.
Prefix Free: JavaScript 언어로 된 CSS 라이브러리이다. Vendor Prefix 작업을 자동으로 진행하여 준다.
7.4. 파생 언어[편집]
TypeScript: 마이크로소프트에서 발표한 JavaScript에 정적 타입 개념을 추가한 신형 언어. CoffeeScript와 마찬가지로 컴파일 결과는 JavaScript이다. 약타입 언어인 JavaScript 타입 시스템의 구멍을 메우기 위해 나왔다. 그렇게 강타입 언어가 된 TypeScript는 코드의 견고함을 강점으로 내세우고 있다. 현재는 Angular 2 이후에서 이 언어를 채택하면서 많이 사용되기 시작했다. ECMAScript 2015 표준도 구현되어 있으며 순수한 JavaScript와 문법적인 차이가 적다. 마이크로소프트에서 만들었다보니 마이크로소프트 편집기인 Visual Studio Code에서 변수 타입이나 오류에 관한 피드백을 즉각즉각 해 주어서 버그 방지에 유용하다.
CoffeeScript: JavaScript의 문법을 개선한 신형 언어. 컴파일 결과로 JavaScript 코드를 내보낸다. 기존 JavaScript의 설계 결함을 극복할 목적으로 만들어졌다. 그러나 Python처럼 들여쓰기로 코드 블록을 구분하는 문법을 채택해 호불호가 갈리는 편이다. 2017년 말에는 '불호' 쪽으로 많이 기울어 있는 상황이다.
JavaScript.NET: JavaScript를 컴파일러용 언어로 개조한 것이다.
ReasonML: 전직 페이스북 개발자가 만든 정적타입, 함수형 프로그래밍 기반 언어이다.
8. 웹과 JavaScript[편집]
2021년 현재까지 사실상 웹 브라우저에서 사용할 수 있는 유일한 언어이다. 일부 정적인 웹사이트는 JavaScript를 사용하지 않고 만들 수 있지만, 단순 애니메이션(애니메이션 gif, CSS 애니메이션) 이상의 무언가를 하기 위해서는 JavaScript가 반드시 필요하다. JavaScript 없이 기능을 구현하려면 Flash 같은 리치 인터넷 애플리케이션을 사용하는 수밖에 없는데, Flash의 액션스크립트도 JavaScript의 표준인 ECMAScript를 따르는 언어이다. 또한 Flash는 2021년부터 브라우저에서 전면 퇴출되어 현재는 JavaScript가 브라우저상의 유일한 기능 구현 언어이다. 네이티브 환경에서는 수십 종의 다양한 프로그래밍 언어가 사용되지만 웹 환경에서는 JavaScript 사용이 강제되고 있다. 다른 언어로 기술된 소스 코드를 JavaScript로 변환해 주는 컴파일러(트랜스파일러)가 있긴 하지만, 어차피 최종적으로는 JavaScript로 번역돼서 실행되기 때문에 웹 개발자가 JavaScript를 피해갈 방법이 없다.
반면, 같은 웹 환경에서 사용되는 나머지 두 핵심 언어(마크업 언어)인 HTML과 CSS는 JavaScript로 대체가 가능하다. 그 중 HTML은 웹 브라우저가 .js 파일을 직접 읽어 실행하지 못하기 때문에 최소한의 코드(script 태그 한 줄)는 필요하지만, CSS는 완전히 JavaScript로 대체해서 기술하는 것도 가능하다. 단지 성능과 편의성에서 손해를 보기 때문에 그렇게 하지 않을 뿐이다. 페이스북에서 개발한 React 라이브러리는 HTML과 CSS를 JavaScript로 제어한다. jsx 템플릿 문법이 HTML을 닮아있긴 하지만 jsx transformer(babel 컴파일러 등)를 통과한 뒤에는 모두 JavaScript 함수로 변환돼있는 것을 볼 수 있다. 네이티브 환경에서의 기계어와 같은 지위를 현재의 JavaScript가 누리고 있는 셈이다.
2021년까지 JavaScript의 성능을 끌어올리려는 시도(asm.js 등)는 있어도 JavaScript를 대체하려는 시도는 이루어지지 않고 있다. 과거에 마이크로소프트가 비주얼 베이직 기반의 VBScript를 민 적이 있지만 결국 JavaScript에 밀려 사라졌고, 오늘날에는 구글의 Dart 언어가 대체를 시도하고는 있지만 현재까지는 Dart 언어도 트랜스컴파일러에 의해 JavaScript로 번역되는 굴욕을 당하는 중이다. 한때 구글 크롬에서 JavaScript를 거치지 않고 직접 Dart 코드를 실행할 수 있도록 하는 Dartium 프로젝트를 진행하였으나 개발이 중단되었다.
2021년 현재 구글·Microsoft·모질라·애플에서 웹어셈블리(WebAssembly)에 대한 활발한 개발이 이루어지고 있다. 웹 엔진을 위한 일종의 어셈블리 언어(정확히는 바이트코드)를 개발하려는 프로젝트로서, 개발자가 C, C++, Rust 언어로 작성된 프로그램을 어떤 브라우저에서든 돌아가도록 컴파일할 수 있게 하는 것이 목표이다. 현재로서는 C, C++, Rust 언어로 작성된 프로그램을 컴파일 해서 돌리는 것이 목표지만, 나중에는 다른 언어들도 목표로 하고 있다. 다만 JavaScript를 완전히 대체하는 것은 아니고 상호 보완적인 관계로 연구되고 있다.
8.1. 차단[편집]
모든 사이트들이 그런것은 아니지만, 광고나 특정 사이트에 무분별하게 끼어드는 리다이렉트를 없애기 위한 조치가 있다. 단, 일회성으로만 사용해야 하며, 이 방법을 계속 유지할 경우, 자바스크립트로 글이나 이미지 등 컨텐츠를 불러오는 대다수의 사이트[36]를 사용할 수가 없다. 인스타그램 같은 SPA 사이트는 거의 이용 불가능이다.[37] 광고로 수익을 내는 사이트에서는 아예 금기시 되고있어, 논란이 많은 편이다.
8.1.1. 구글 크롬[편집]
개인 정보 보안탭으로 간 후, 사이트 설정으로 간 뒤, 컨텐츠 클릭후, 자바 스크립트 허용안함 탭을 누르고. 새로고침을 하면 된다.
8.1.2. 모질라 파이어폭스[편집]
주소 표시줄에 about:config 입력후 엔터를 누른다. 그런다음, 위험을 감수하고 클릭을 누른다음, java탭을 검색해서, javascript.enabled에 있는 true를 false로 바꾸고 새로고침을 하면 된다.
8.1.3. 마이크로소프트 Edge[편집]
우측 상단의 점 3개를 누르거나, 설정 탭으로 간 다음, 쿠키 탭으로 간다. 모든 퍼미션 탭을 누른다음, 허용됨(권장) 의 활성화를 끄고, 새로고침을 하면 된다.
13-1 자바스크립트로 무엇을 할까.
13-2 웹브라우즈가 자바스크립트를 만났을 때
13-3 자바스크립트 용어와 기본 입출력 방법
13-4 자바스크립트 스타일 가이드
첫댓글 https://namu.wiki/w/JavaScript & https://www.w3schools.com/css/tryit.asp?filename=trycss_default