생활코딩 - 리액트 강의를 듣고 다시 자바스크립트 기초부터 다져야겠다고 다짐 완료
주변 지인분께 추천받은 드림코딩 by 엘리 - JavaScript 강의를 들어보기로 결심했다.
1강. JavaScript 역사
- 1993년 : UI 요소가 더해진 Mosaic Web Browser 출시
- Mosaic Web Browser 개발팀을 이끌던 Marc Andreessen은 Netscape사 설립
-> UI 요소가 더 추가된 Netscape Navigator 출시
- 당시 시장은 HTML과 CSS로 간단한 웹페이지 구현 가능
->html의 링크로만 페이지 이동 가능 == 정적 웹사이트(80%)
- 1994년 9월 : Netscape사 Mocha 탄생(내부적 이름)
- LiveScript로 이름 변경(Netscape Navigator에 interpreter 포함되어 출시)
- JavaScript로 이름 변경(당시 인기있던 Java 이름 차용)
- 1995년 : JavaScript와 그 엔진 Netscape Navigator 브라우저에 포함되어 출시
- Microsoft사 Reverse engineering를 통해 JScript 출시
- Microsoft사 Internet Explore 출시
- 1996년 11월 : Netscape사 ECMA International사에 JavaScript 표준화 제안
- 1997년 7월 : ECMAScript** 1 출시
+ 1999년 ECMAScript 3 : error handling, === 추가
+ 2000년 ECMAScript 4 : optional type annotation, class 등 추가
- 2000년 : Internet Explorer 점유율 95%
- Microsoft사가 ECMAScript 표준안 참가 X
- 2004년 : moz://a사 Firefox 출시
- ActionScript3언어, Tamarin 엔진으로 표준화 검토 제안
- AJAX(Axynchronous JavaScript and XML - Jesse James Garrett) 도입
- 여러 개발자들 커뮤니티에서 jQuery, dojo, mootools 라이브러리 출시
-> 다른 브라우저의 구현 사항을 신경쓰지 않게 하기 위함
- 2008년 : Google사 Chrome 출시
- Chrome은 JIT(just-in-time compilation)엔진 포함
+ JavaScript 실행속도가 매우 빠름
- 2009년 : ECMAScript 5 출시
- 2015년 : ECMAScript 6 출시
- default parameter, class, arrow function, const, let
Babel
개발자들이 개발할 때에는 최신 버전의 ECMAScript를 사용 후,
배포할 때에는 transcompiler를 이용해 ECMAScript 5,6 로 변환
SPA(Single Page Application)
하나의 페이지 안에서 데이터를 받아와 필요한 부분만 부분적으로 업데이트
-> React, Ancular(서비스 종료,,), Vue
JavaScript 이용 분야
- Back-end(NodeJS) : Chrome의 V8 엔진을 이용한 백엔드에서 서비스를 구현할 수 있도록 만들어짐
- Mobile(React native) : 모바일 어플리케이션
- Desktop(Electron) : 데스크탑 어플리케이션
+ 표준화의 필요성
: 개발자들은 다양한 브라우저에서 잘 동작할 수 있도록 웹페이지를 만들어야하기 때문
+ 좋은 프로그래밍의 철학
: service layer, presentation layer, business layer를 만들 때
API들을 잘 작성해 추후 구현사항이 변경되더라도, interface 사용자의 코드는 수정하지 않도록 만드는 것이 좋음
* Reverse engineering : 만들어진 프로그램의 바이너리 코드를 분석해 소스코드를 분석해내는 과정
** ECMAScript : 브라우저에서 동작하는 언어를 만들 때, 엔진이 이해하기 위해서의 문법적인 사항들을 정리한 문서
정말 강의를 듣고 나서,, 무언가 만드는데만 급급해서 코드만 따라쓰고, 이러한 언어가 필요해진 이유나 배경에 대해
알아보려는 노력이 없었다는 생각이 들어 조금 부끄러워진 것 같다..
'개발 공부 > JavaScript' 카테고리의 다른 글
6. 클래스와 오브젝트의 차이점 (0) | 2022.01.19 |
---|---|
5. Arrow function (2) | 2022.01.18 |
4. operator, if, for, loop (0) | 2022.01.16 |
3. 데이터타입(let? var?) hoisting (0) | 2022.01.15 |
2. async와 defer의 차이점은? (0) | 2022.01.14 |