목차(클릭하세요)
코드박스가 초보자를 위한 미래다!!
1. 웹(web)의 3대 기본 언어 이해하기
•
HTML = 집의 뼈대와 구조 (벽, 문, 창문의 위치)
•
CSS = 집의 인테리어와 디자인 (색깔, 가구 배치, 조명)
•
JavaScript = 집의 전기와 자동화 시스템 (스위치, 자동문, 스마트홈)
1-1. HTML
핵심 개념: 웹페이지에 나타나는 모든 요소의 배치와 내용을 기술하는 언어
•
태그(Tag): <div>, <p>, <h1> 등으로 요소를 감싸는 방식
•
시맨틱: 의미있는 태그 사용 (<header>, <nav>, <main>)
•
구조화: 논리적인 문서 구조 만들기
1-2.CSS( Cascading Style Sheets)
핵심 개념: 웹 페이지 요소의 스타일을 정할 때 사용하는 언어
•
선택자(Selector): 어떤 요소를 꾸밀지 선택
•
속성(Property): 색상, 크기, 위치 등의 스타일
•
반응형: 다양한 화면 크기에 맞춰 조정
1-3.JavaScript
핵심 개념: 웹 페이지에 동적인 기능(움직이거나 변화하는)을 장착할 수 있게 도와주는 언어
•
이벤트: 사용자의 행동에 반응
•
DOM 조작: HTML 요소를 동적으로 변경
•
비동기: 서버와 통신하며 데이터 주고받기
2. 자바스크립트(=JS)는 어떻게 실행되나?
2-1. JavaScript 엔진
•
JavaScript 코드를 컴퓨터가 이해할 수 있는 언어로 번역하고 실행해주는 프로그램
[주요 JavaScript 엔진들]
•
V8 (Chrome, Node.js) - 구글이 만든 가장 빠른 엔진, 자바스크립트 엔진에서 현재 가장 잘 나감.
•
SpiderMonkey (Firefox) - 최초의 JavaScript 엔진
•
JavaScriptCore (Safari) - 애플의 엔진
2-2. 크롬 개발자 도구 실행
•
개발자 도구 실행방법
◦
Windows/Linux: F12 또는 Ctrl + Shift + I
◦
우클릭: "검사" 또는 "개발자 도구"
2-3. 콘솔이란?
•
콘솔: 브라우저에서 JavaScript 코드를 즉석에서 실행하고 결과를 확인할 수 있는 대화형 환경
•
콘솔의 사용목적: JS의 동작을 기록(log)하거나 표시할 목적으로 사용
•
console.log : 괄호안의 문자열을 콘솔에 출력하는 명령어
console.log("안녕하세요!");
JavaScript
복사
2-4.또 다른 JS명령어
console.warn("주의하세요!");
JavaScript
복사
3. 웹 에디터로 JS편집하기
3-1. 코드샌드박스(추천)
[특징]
•
실제 개발환경과 거의 동일한 경험
•
파일 구조를 제대로 관리 가능
•
실시간 협업 가능
•
VS Code와 유사한 개발 환경을 제공하며, 여러 파일·폴더를 생성하고 NPM 패키지까지 사용가능
•
React, Vue, Node.js 등 다양한 프레임워크, 라이브러리를 쉽게 적용 가능해 실제 프로젝트 수준의 개발과 실습에 훨씬 적합
[사용법]
2.
"Create Sandbox" 클릭(또는 Create )
3.
템플릿 선택 (Vanilla JS, React, Vue 등)
4.초기설정이 끝나면
이런 환경이 보여짐
[Vaniila는 무엇?]
•
Vaniila JS는 어떤 라이브러리나 프레임워크도 적용되지 앟은 순수한 자바스크립트를 의미
•
Vaniila 단어의 어원은 스페인어로 ‘콩’인데, 요즘은 ‘핵심’ 또는 ‘근본’이라는 뜻으로 확장.
[mjs는 무엇?]
•
.mjs 확장자는 JavaScript 모듈(Module) 파일을 의미
•
ES6(ECMAScript 2015)부터 도입된 import / export 문법을 사용할 때 공식적으로 권장되는 확장자
•
Node.js에서 구분이 필요한 관계로 사용됨
[간단 테스트]
// index.mjs
import './styles.css';
const app = document.getElementById('app');
// 투두리스트 만들기
const todos = [];
function renderTodos() {
  app.innerHTML = `
    <h1>My Todo App</h1>
    <input type="text" id="todoInput" placeholder="할 일을 입력하세요">
    <button onclick="addTodo()">추가</button>
    <ul>
      ${todos.map((todo, index) => 
        `<li>${todo} <button onclick="deleteTodo(${index})">삭제</button></li>`
      ).join('')}
    </ul>
  `;
}
window.addTodo = () => {
  const input = document.getElementById('todoInput');
  if (input.value.trim()) {
    todos.push(input.value);
    input.value = '';
    renderTodos();
  }
};
window.deleteTodo = (index) => {
  todos.splice(index, 1);
  renderTodos();
};
renderTodos();
JavaScript
복사
•
위 코드를 집어넣고 실행화면 확인
•
[코드 샌드박스의 핵심 기능]
◦
콘솔창 바로 접속
◦
코드페이지 바로 보기
3-1-1.코드 샌드박스 기본설정
•
Code completion by Codelium (...) : 코드 자동완성 기능
◦
사용법: 코드를 타이핑하다가 Ctrl + Space (또는 Cmd + Shift + Space)를 누르면 AI가 다음에 올 코드를 예측해서 제안
•
 Enable VIM extension: VIM 텍스트 에디터의 키보드 단축키 방식 사용
◦
끄는 것을 추천
◦
VIM이란? —> 마우스 없이 키보드만으로 모든 편집을 하는 에디터
•
Use pointer cursors : 포인터 커서 사용
◦
기능: 클릭 가능한 요소(버튼, 링크 등)에 마우스를 올리면 손가락 모양 커서로 변경
3-1-2.코드 샌드박스 babel변경
•
바벨이란?
◦
Babel은 **자바스크립트 컴파일러(트랜스파일러)
◦
최신 자바스크립트(ES6~ES2023)를 구형 브라우저나 오래된 환경이 이해할 수 있는 ES5 코드로 변환해주는 역할 담당
◦
필요한 이유: 브라우저마다 지원하는 자바스크립트 버전이 다르기 때문에, Babel이 중간에서 번역해줘야 모든 환경에서 같은 코드가 동작
•
parcel?
◦
여러 개의 HTML, JS, CSS 파일을 한 덩어리로 묶어 웹 브라우저가 빠르게 실행할 수 있도록 만들어 주는 포장 도구
[바벨 변경방법]
package.son을 직접 변경하기
•
변경전
{
  "name": "javascript",
  "version": "1.0.0",
  "description": "The JavaScript template",
  "scripts": {
    "start": "parcel ./src/index.html",
    "build": "parcel build ./src/index.html"
  },
  "devDependencies": {
    "parcel": "^2.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^7.2.0"
  },
  "keywords": ["css", "javascript"]
}
JavaScript
복사
•
변경후
{
  "name": "javascript",
  "version": "1.0.0",
  "description": "The JavaScript template",
  "scripts": {
    "start": "parcel ./src/index.html",
    "build": "parcel build ./src/index.html"
  },
  "devDependencies": {
    "parcel": "^2.0.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^7.2.0",
    "@babel/core": "^7.22.0",
  "@babel/preset-env": "^7.22.0",
  "@babel/plugin-proposal-nullish-coalescing-operator": "^7.22.0"
  },
  "keywords": ["css", "javascript"]
}
JavaScript
복사
3-2.코드펜
•
빠른 프로토타이핑
•
CSS 애니메이션 실험
•
간단한 JS 기능 테스트
•
 HTML, CSS, JS 각각의 패널에서 작업가능
3-3.JSfiddle
•
일회성 프론트엔드 스크립트공유하는데 최적화
•
코드 여러 버전 저장, 교차 시험 등 프로토타이핑에 적합
4. HTML태그에 대한 기초들
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>양파고의 AI & 프로그래밍 블로그</title>
</head>
<body>
<!-- 실제로 동작하는 간단한 웹페이지 -->
<header style="background: #4CAF50; color: white; padding: 20px; text-align: center;">
    <h1>🤖 양파고의 AI & 프로그래밍 블로그</h1>
    <nav>
        <ul style="list-style: none; padding: 0; display: flex; justify-content: center; gap: 20px;">
            <li><a href="#home" style="color: white; text-decoration: none; padding: 10px;">🏠 홈</a></li>
            <li><a href="#projects" style="color: white; text-decoration: none; padding: 10px;">💻 프로젝트</a></li>
            <li><a href="#about" style="color: white; text-decoration: none; padding: 10px;">👋 소개</a></li>
        </ul>
    </nav>
</header>
<main style="max-width: 800px; margin: 0 auto; padding: 20px;">
    <article style="background: #f9f9f9; padding: 20px; border-radius: 10px; margin: 20px 0;">
        <h2>🚀 오늘의 개발 일기</h2>
        <p>오늘은 <strong>JavaScript</strong>로 웹페이지를 만들면서 <em>HTML</em>도 배웠다! 생성형AI로 프로그래밍 날먹+찍먹.</p>
        <img src="https://images.unsplash.com/photo-1555066931-4365d14bab8c?w=400&h=200&fit=crop" 
             alt="프로그래밍하는 모습" 
             style="width: 100%; max-width: 400px; border-radius: 8px; margin: 10px 0;">
        <p>🔗 유용한 학습 자료들:</p>
        <ul>
            <li><a href="https://yangphago.oopy.io/" target="_blank">양파고 블로그 바로가기</a></li>
            <li><a href="https://developer.mozilla.org/ko/docs/Web/JavaScript" target="_blank">JavaScript 공부하기</a></li>
            <li><a href="https://codesandbox.io" target="_blank">CodeSandbox에서 연습하기</a></li>
        </ul>
    </article>
    
    <article id="projects" style="background: #fff3cd; padding: 20px; border-radius: 10px; margin: 20px 0;">
        <h2>💻 내가 배운 프로그래밍 언어들</h2>
        <table style="width: 100%; border-collapse: collapse;">
            <tr style="background: #007bff; color: white;">
                <th style="padding: 10px; border: 1px solid #ddd;">언어</th>
                <th style="padding: 10px; border: 1px solid #ddd;">용도</th>
                <th style="padding: 10px; border: 1px solid #ddd;">난이도</th>
            </tr>
            <tr>
                <td style="padding: 10px; border: 1px solid #ddd;">JavaScript</td>
                <td style="padding: 10px; border: 1px solid #ddd;">웹 개발</td>
                <td style="padding: 10px; border: 1px solid #ddd;">⭐⭐⭐</td>
            </tr>
            <tr style="background: #f8f9fa;">
                <td style="padding: 10px; border: 1px solid #ddd;">Python</td>
                <td style="padding: 10px; border: 1px solid #ddd;">AI & 데이터 분석</td>
                <td style="padding: 10px; border: 1px solid #ddd;">⭐⭐</td>
            </tr>
            <tr>
                <td style="padding: 10px; border: 1px solid #ddd;">HTML/CSS</td>
                <td style="padding: 10px; border: 1px solid #ddd;">웹 디자인</td>
                <td style="padding: 10px; border: 1px solid #ddd;">⭐</td>
            </tr>
        </table>
    </article>
    
    <section id="about" style="background: #d1ecf1; padding: 20px; border-radius: 10px; margin: 20px 0;">
        <h2>👋 자기소개</h2>
        <p>안녕하세요! AI와 프로그래밍에 관심이 많은 고등학생 양파고입니다. Claude와 함께 웹 개발을 배우고 있어요!</p>
        <h3>🎯 현재 학습 중인 것들:</h3>
        <ul>
            <li>🌐 JavaScript로 동적 웹페이지 만들기</li>
            <li>🤖 AI 도구 활용한 효율적인 코딩</li>
            <li>📱 반응형 웹디자인</li>
        </ul>
        <form style="margin-top: 15px;">
            <label>💬 개발 관련 질문이나 의견을 남겨주세요:</label><br>
            <textarea placeholder="JavaScript나 AI에 대해 궁금한 것이 있다면 여기에 써주세요!" 
                      style="width: 100%; height: 80px; margin: 10px 0; padding: 10px; border-radius: 5px; border: 1px solid #ccc;"></textarea><br>
            <button type="button" 
                    style="background: #28a745; color: white; padding: 10px 20px; border: none; border-radius: 5px; cursor: pointer;"
                    onclick="alert('의견이 등록되었습니다! 함께 공부해요! 🚀')">의견 남기기</button>
        </form>
    </section>
</main>
<footer style="background: #343a40; color: white; text-align: center; padding: 20px; margin-top: 40px;">
    <p>© 2025 양파고의 AI & 프로그래밍 블로그 | 
       <a href="mailto:yangphago@example.com" style="color: #ffc107;">📧 연락하기</a> | 
       <a href="https://github.com" target="_blank" style="color: #ffc107;">💻 GitHub</a>
    </p>
</footer>
</body>
</html>
HTML
복사
 문서 구조 태그
태그  | 용도  | 설명  | 
<!DOCTYPE html>  | HTML5 문서 선언  | 문서 맨 위에 작성  | 
<html>  | 전체 문서  | 모든 내용을 감싸는 최상위 태그  | 
<head>  | 문서 정보  | 제목, CSS, JS 등 메타 정보 (화면에 안 보임)  | 
<body>  | 본문 내용  | 실제 화면에 보이는 모든 내용  | 
<main>  | 메인 콘텐츠  | 페이지의 주요 내용  | 
<section>  | 섹션 구분  | 논리적으로 구분되는 영역  | 
<article>  | 독립적인 글  | 블로그 포스트, 뉴스 기사 등  | 
<header>  | 헤더 영역  | 페이지/섹션 상단부  | 
<footer>  | 푸터 영역  | 페이지/섹션 하단부  | 
<nav>  | 내비게이션  | 메뉴, 링크 모음  | 
 텍스트 관련 태그
태그  | 용도  | 예시  | 
<h1> ~ <h6>  | 제목  | h1이 가장 크고 중요함  | 
<p>  | 문단  | 일반적인 텍스트 블록  | 
<span>  | 인라인 텍스트  | 텍스트 일부만 스타일링  | 
<strong>  | 굵게 (중요함)  | 의미적으로 중요한 텍스트  | 
<em>  | 기울임 (강조)  | 강조하고 싶은 텍스트  | 
<br>  | 줄바꿈  | 강제 줄바꿈 (닫는 태그 없음)  | 
 링크와 미디어
태그  | 용도  | 주요 속성  | 
<a>  | 링크  | href="URL"  | 
<img>  | 이미지  | src="경로", alt="설명"  | 
<video>  | 비디오  | src="경로", controls  | 
<audio>  | 오디오  | src="경로", controls  | 
 목록 태그
태그  | 용도  | 설명  | 
<ul>  | 순서 없는 목록  | 불릿 포인트 목록  | 
<ol>  | 순서 있는 목록  | 번호가 매겨진 목록  | 
<li>  | 목록 항목  | ul, ol 안에서 사용  | 
 표와 폼
태그  | 용도  | 설명  | 
<table>  | 표  | 테이블 전체를 감싸는 태그  | 
<tr>  | 표 행  | 테이블의 가로줄  | 
<td>  | 표 셀  | 테이블의 일반 셀  | 
<th>  | 표 헤더  | 테이블의 제목 셀  | 
<form>  | 폼  | 사용자 입력을 받는 양식  | 
<input>  | 입력 필드  | 텍스트, 버튼, 체크박스 등  | 
<button>  | 버튼  | 클릭 가능한 버튼  | 
<select>  | 드롭다운  | 선택 목록  | 
<textarea>  | 긴 텍스트 입력  | 여러 줄 텍스트 입력창  | 
 기억해야 할 우선순위
필수 (반드시 알아야 함)
•
div, p, h1-h6, span
•
a, img, button
•
ul, ol, li
중요 (자주 사용)
•
form, input, textarea
•
table, tr, td
•
header, main, footer
5. JS문법 버전차이
•
ES5(ECMAScript 5)와 ES6(ECMAScript 2015)의 차이란?
◦
ES5: 현재 JS 문법의 기초를 세운 세대.
◦
ES6: 현대 자바스크립트의 시작점. 가독성·생산성을 크게 높인 기능 다수 도입.
[변순선언시]
// ES5
var x = 10;
var y = 20;
console.log(x + y); // 30
// ES6
let x = 10;
const y = 20;   // 상수
console.log(x + y); // 30
JavaScript
복사
[함수사용시]
// ES5
var add = function(a, b) {
  return a + b;
};
console.log(add(2, 3)); // 5
// ES6
const add = (a, b) => a + b;
console.log(add(2, 3)); // 5
JavaScript
복사
[문자열 템플릿 리터럴]
// ES5
var name = "Yangphago";
var msg = "Hello, " + name + "!";
console.log(msg); // Hello, Yangphago!
// ES6
let name = "Yangphago";
let msg = `Hello, ${name}!`;
console.log(msg); // Hello, Yangphago!
JavaScript
복사















