전체적 바닐라 js의 구성 그림
바닐라 js를 통한 코드 작성은 index.html의 요소를 main.js 라는 애가
controller로 우선 하나씩 생성자 하나씩으로 자기의 하위 생성자를 자신의 하위 속성으로 만들면서
거기에 각 태그와 연결지어넣고 그 연결지을 때마다 메소드를 구현하는 것.
그리고 controller를 통해서 서버나 db와 잇기도 한다.
- DOM 요소와의 연결: index.html에 정의된 DOM 요소들을 자바스크립트 파일(예: main.js)에서 선택하여 사용합니다. 이를 위해 document.querySelector와 같은 DOM API를 사용하여 HTML 문서의 요소들을 자바스크립트 객체로 가져옵니다. 이 과정을 통해 웹 페이지의 구조(HTML)와 행동(JS)을 연결지어 줍니다.
- 클래스와 생성자 함수 사용: 웹 애플리케이션의 다양한 부분들을 관리하기 위해 클래스와 생성자 함수를 사용합니다. 이들은 특정 기능을 가진 객체를 생성하고, 그 객체의 초기 상태를 설정하는 데 사용됩니다. 예를 들어, 위에서 본 Store 클래스는 애플리케이션의 상태 관리를 담당하는 객체를 생성합니다.
- 메소드를 통한 기능 구현: 클래스 내에 정의된 메소드들을 통해 특정 기능을 구현합니다. 이러한 메소드들은 이벤트 리스너, 데이터 처리, DOM 업데이트 등 다양한 작업을 수행할 수 있습니다.
- 컨트롤러 역할: main.js 같은 자바스크립트 파일은 애플리케이션의 '컨트롤러' 역할을 할 수 있습니다. 이는 애플리케이션의 데이터 로직과 UI 간의 상호작용을 관리하고, 필요에 따라 서버나 데이터베이스와의 통신을 담당합니다. AJAX 요청, Fetch API, Axios 등을 사용하여 이러한 통신을 구현할 수 있습니다.
- 이벤트 핸들링: 사용자의 입력과 상호작용에 반응하기 위해 이벤트 리스너를 설정합니다. 이벤트 리스너는 특정 이벤트(클릭, 키보드 입력 등)가 발생했을 때 실행될 콜백 함수를 정의합니다.
constructor 이해해보기
생성자의 constructor는 생성자의 속성을 만들어내고... 그 속성들은 각 태그 요소들과 잇거나, 메소드를 선언해놓고 불러 쓰게끔하는 거
생성자들은 이런식으로 this를 통해 객체인 자신에게 속성, 메서드를 갖다 붙임.
<상세설명>
스크립트에서 클래스의 constructor 메소드는 새로운 객체 인스턴스가 생성될 때 자동으로 호출되며, 이 객체의 초기 상태를 설정하는 데 사용됩니다. 여기서 초기 상태를 설정한다는 것은, 객체에 속성(데이터)을 추가하고, 필요한 초기화 작업을 수행하는 것을 말합니다.
속성 추가
생성자 내에서 this.속성명 = 값 형태로 속성을 추가함으로써, 각 객체 인스턴스마다 이 속성들을 가지게 됩니다. 이러한 속성들은 객체의 상태를 나타내며, 객체가 수행할 수 있는 행동(메소드)에 의해 사용되거나 변경될 수 있습니다.
태그 요소와 연결
웹 개발에서는 DOM(Document Object Model) 요소(즉, HTML 태그)와 자바스크립트 객체를 연결하여, 사용자 인터페이스(UI)와 상호작용하는 동적인 웹 애플리케이션을 만듭니다. 생성자 함수에서는 이러한 DOM 요소를 찾아서 객체의 속성으로 저장할 수 있습니다. 이렇게 하면, 객체의 메소드에서 이 속성을 통해 DOM 요소를 쉽게 참조하고, 조작할 수 있게 됩니다.
메소드 선언 및 사용
클래스 내에서 메소드를 선언하고, 생성자 함수나 다른 메소드에서 이 메소드들을 this.메소드명() 형식으로 호출할 수 있습니다. 이 메소드들은 객체의 상태를 변경하거나, 계산을 수행하거나, DOM을 조작하는 등의 작업을 수행할 수 있습니다.
느낀점.
웹 개발을 내가 프론트부터, 베포까지 다해보고 cs를 공부하기 시작한 후에 기초를 다시 봐보니,
내가 이전에 공부할 때, 못보던 부분을 보게되어 신기하고 재밌다.
'🪁react > 바닐라 js 실습' 카테고리의 다른 글
[...객체] 와 Object.value(객체)의 차이 그리고 Object.entries() (0) | 2024.04.05 |
---|---|
자식 클래스 안에서 부모 클래스의 메소드 호출은 자식 클래스의 메소드 안에서 (2) | 2024.04.05 |
View와 Controller의 관계 (0) | 2024.04.05 |
바닐라 js로 하는 것의 규칙(계속 최신화 예정) (0) | 2024.04.05 |
클래스 컴포넌트 super란? (0) | 2024.04.03 |