728x90

1. script 로드 해결 방법

HTML에서 script를 언제, 어떻게 불러오냐에 따라 페이지 성능과 동작이 크게 달라져.
아래처럼 크게 3가지 방식이 있어.


1) body 최하단에 script 넣기

  • HTML 태그들 다 그린 후 JS 실행
  • 가장 기본적이고 안전한 방식
  • 단점: JS가 많아지면 로드 느림
  • 예시:
<body>
  <h1>Hello</h1>
  <script src="main.js"></script>
</body>

2) load 이벤트 리스너 등록

  • window.onload → 모든 리소스(img, css 등) 로딩 완료 후 실행
window.onload = function() {
  console.log("모든 리소스 로드 완료!");
};
 
  • DOMContentLoaded → HTML 파싱 완료 시점에 실행 (이미지, css는 기다리지 않음)
document.addEventListener("DOMContentLoaded", function() {
  console.log("DOM 준비 완료!");
});
  • 비유:
    • window.onload → 집 짓고 가구까지 다 들어온 후 집에 들어감
    • DOMContentLoaded → 집은 다 지었는데, 가구는 아직 옮기는 중

3) HTML5 script 속성


✅ defer

  • HTML 파싱과 JS 다운로드 동시에 진행
  • 단, 실행은 HTML 파싱 끝난 뒤
  • 여러 개 defer 스크립트 → 작성 순서대로 실행
  • 비유: “집 짓는 동안 가구 주문해 두고, 집 완공되면 가구 설치 시작”

예시:

<script src="main.js" async></script>

✅ async

  • HTML 파싱과 JS 다운로드 동시에 진행
  • 다운로드가 끝난 순간 바로 실행 (HTML 파싱 멈춤)
  • 여러 개 async 스크립트 → 실행 순서 보장 안 됨
  • 비유: “누가 먼저 도착하든 바로 가구 들이밀기 → 순서 뒤죽박죽”

예시:

<script src="main.js" async></script>

✅ defer vs async 한눈에 정리

속성 다운로드 실행 시점 순서 보장
defer HTML 파싱 중 HTML 파싱 끝나고 O
async HTML 파싱 중 다운로드 끝나면 즉시 X
 

2. this 개념 정리


this는 “누가 불렀냐”에 따라 달라진다

  • 기본적으로 this는 호출하는 주체를 가리킨다
  • this가 가리키는 대상은 상황별로 달라진다

✅ this의 여러 예시


1) 전역에서 this

console.log(this); // window (브라우저 기준)
  • 비유: “밖에서 혼자 말하면, 집 전체(윈도우)가 들음”

2) 함수 안에서 this

  • 엄격 모드(use strict) 여부에 따라 다름
    • strict 모드 → undefined
    • 비 strict 모드 → window
function foo() {
  console.log(this);
}

foo(); // window (비 strict)

3) 객체의 메서드에서 this

  • this → 해당 객체
const user = {
  name: "Alice",
  sayHello: function() {
    console.log(this.name);
  }
};

user.sayHello(); // Alice

4) 이벤트 리스너에서 this

  • 기본적으로 this → 이벤트가 걸린 HTML 요소
<button id="btn">클릭</button>

<script>
  document.getElementById("btn").addEventListener("click", function() {
    console.log(this); // <button> 요소
  });
</script>

5) 화살표 함수에서 this

  • 화살표 함수는 자신만의 this를 가지지 않는다 → 바깥 스코프의 this를 물려받음
const user = {
  name: "Alice",
  sayHello: () => {
    console.log(this.name);
  }
};

user.sayHello(); // undefined
  • 비유: 화살표 함수는 “나는 this를 새로 안 만들고, 부모님 따라갈래~”

✅ this의 디폴트는 window

  • 전역에서 this는 window
  • 하지만 함수나 객체 안에서 상황에 따라 달라지니 주의!

✅ 마무리

script 로딩 전략을 잘 선택하면 웹페이지 속도가 달라지고,
this 개념을 이해해야 자바스크립트를 제대로 다룰 수 있다!
defer와 async, this는 프런트엔드 개발 필수 개념이니 꼭 정리해 두자.

728x90
728x90

🌳 DOM Tree (Document Object Model)

DOM은 웹 문서를 트리(Tree) 형태로 표현한 구조야. **HTML 문서 안의 모든 요소(태그, 텍스트, 속성)**를 객체처럼 다룰 수 있게 해주지.


DOM Tree 예시 다이어그램

HTML 예시

 
<!DOCTYPE html>
<html>
  <head>
    <title>My Page</title>
  </head>
  <body>
    <h1>Hello</h1>
    <p>Welcome!</p>
  </body>
</html>

나무 모양 다이어그램:


DOM 이해 비유

  • document → 전체 나무
  • html → 큰 가지
  • head, body → html 아래 두 갈래 큰 가지
  • 태그들 → 잎사귀
  • 텍스트 → 잎사귀에 적힌 글자

🌐 BOM (Browser Object Model)

DOM은 “문서”를 다루고, BOM은 브라우저 자체를 다루는 개념이야.

  • BOM은 DOM보다 더 “바깥쪽”에 있음
  • 웹 페이지가 아닌, 브라우저 환경 자체를 다루는 객체들이 BOM에 포함됨
  • 대표적인 BOM 객체:
    • window
    • navigator
    • screen
    • history
    • location

✅ 주요 BOM 객체 설명

1. window

  • 최상위 객체 (DOM, BOM 둘 다 포함)
  • 비유: 브라우저 창 전체
  • 예시:
window.alert("Hello!");
console.log(window.innerWidth);

2. document

  • DOM의 진입점
  • HTML 문서를 표현
  • 예시:
     
document.getElementById("title");

3. navigator

  • 브라우저 정보
  • 예시:
console.log(navigator.userAgent);
console.log(navigator.language);

4. screen

  • 사용자 화면 해상도 정보
  • 예시:
console.log(screen.width);
console.log(screen.height);

5. location

  • 현재 URL 정보 + 이동 기능
  • 예시:
console.log(location.href);
location.href = "https://www.google.com";

6. history

  • 사용자가 방문한 페이지 이력
  • 예시:
history.back();
history.forward();

✅ DOM vs BOM

구분DOMBOM
역할 문서(HTML)를 객체로 표현 브라우저 환경 자체를 다룸
최상위 객체 document window
예시 document.getElementById window.alert, location.href
 

✅ 비유로 정리

  • DOM → 웹페이지의 설계도
  • BOM → 브라우저라는 집 전체의 컨트롤러
  • window → 집 전체
  • document → 집 안의 설계도
  • navigator → 집의 신분증
  • screen → 집의 창문 크기
  • location → 집 주소
  • history → 집 방문 내역
728x90
728x90

💡 프론트엔드란? – 사용자와 만나는 첫 화면

프론트엔드는 사용자가 직접 보는 웹·앱의 UI를 구성하고, 버튼 클릭, 입력창 등 사용자 행동에 반응하는 기능을 구현하는 분야입니다. 화면을 꾸미는 것을 넘어, 사용자 경험을 설계하는 핵심 역할을 합니다.

🛠 어떤 일을 하나요? – UI 구성, 반응형 설계, API 연동

  • UI 구성: HTML, CSS로 화면 구조와 스타일 구성
  • 인터랙션 개발: JavaScript로 버튼, 모달 등 기능 구현
  • API 연동: 서버에서 가져온 데이터를 화면에 표시

🔧 사용하는 기술들 – HTML, CSS, JavaScript, React 등

  • HTML/CSS: 화면 구조와 디자인을 구성하는 기본 언어
  • JavaScript: 동적인 기능과 로직 처리 (ex. 클릭 이벤트)
  • React/Vue: 효율적인 UI 구성 도구
  • Git, Figma: 협업 및 디자인 도구

🗺 프론트엔드 입문 로드맵 (2025년 기준)

1. 웹 기초 학습
- HTML/CSS로 정적 웹페이지 만들기

2. JavaScript 기본 문법 익히기
- 변수, 함수, 조건문, DOM 조작 등

3. 인터랙션 구현
- 이벤트 처리, API(fetch) 활용

4. React 기초 학습
- 컴포넌트, 상태 관리, 라우팅 등

5. 실전 미니 프로젝트
- 투두 앱, 영화 검색, 날씨 앱 등

6. 포트폴리오 제작 & 배포
- GitHub Pages, Netlify 활용

📚 추천 자료 & 공부법

🚀 나에게 맞는 진로 고민 + 포트폴리오 전략

  • 사용자 중심의 직관적인 설계에 관심 있다면 프론트엔드에 적합
  • UI/UX에 민감하고, 시각적 표현을 좋아하는 성향도 잘 맞음
  • 포트폴리오는 직접 만든 앱과 사이트를 중심으로 구성 (GitHub, Notion 링크 활용)

✅ 마무리

프론트엔드는 웹과 앱에서 사용자와 서비스가 만나는 접점입니다. 직접 눈에 보이는 결과물이 나오기 때문에 성취감도 높고, 실전 프로젝트도 빠르게 경험할 수 있어요. 오늘부터 하나씩 따라하며 나만의 서비스에 도전해보세요!

728x90

+ Recent posts