시나브로 자바스크립트

단단한 자바스크립트 실력을 얻고 싶으세요? 기반을 튼튼하게 다지고 자신감을 느껴보세요.

React 나 Vue.js 등의 프론트엔드 프레임워크를 가지고 개발을 하지만, JavaScript 자체는 너무 모르고 있다는 느낌이 드시나요? 개발을 하다 보면, 막히는 부분이 많은데, 내가 뭘 몰라서 막히는지조차 모르는 경우가 있죠.

이 강의는 다양한 미니 프로젝트를 통해 JavaScript 를 다양하게 사용해 보고, 프레임워크 없이 구현하려면 어떻게 하는지 보다 깊이 이해하게 도와줍니다. 다양한 예제를 차근차근 하나씩 따라가다 보면, 어느새 JavaScript 를 폭넓게 사용해 본 경험을 얻게 되고, 그게 자신감에 큰 도움을 줄 거예요.

혹시,

개발하다 문제를 맞닥뜨릴 때, 어떻게 풀어야 할지 방향을 모르겠고, 도와주는 동료나 사수가 없으신가요?

구글링해서 얻은 코드로 해결은 했는데, 문제가 정확히 뭐였는지, 이게 어떻게 해결된 건지 여전히 이해는 안 가시나요?

실력을 키우고는 싶은데 뭘 공부해야 할지 모르겠고, 면접 용 질문 답변을 열심히 공부하긴 하지만, 실전에는 도움이 안 되는 것 같나요?

React 나 Vue.js 같은 프레임워크가 있기 전엔 어떻게 프론트엔드 개발을 했을까요?

어떤 분들을 위한 강의냐면,

  • 자바스크립트를 배우긴 했는데, 어떻게 써야 하는지 모르겠고 따라 해 볼 예제가 필요한 분

  • React 나 Vue.js 등의 프론트엔드 프레임워크로 개발을 해봤고 실력을 더 늘리고 싶은 분

  • 프론트엔드 프레임워크 실력이 부족한 건지, 아니면 자바스크립트 실력이 부족한 건지 잘 모르겠는 분

  • 주니어에서 미드 레벨로 올라가고 싶으신 분. 혹은, 미드 레벨이지만 여전히 자바스크립트 기반이 단단하지 못하다 생각하시는 분.

강의로 얻으실 수 있는 것

  • 기존에 어떤 문제가 있었길래 그걸 해결하려고 이런 프레임워크들이 나왔을까요? 맥락을 알고 나면 프레임워크를 이해하기 쉬워져요. 또 새로운 프레임워크가 나온다? 과거와 현재의 맥락을 알기 때문에, 새로운 프레임워크가 아직 해결 안 된 어떤 문제를 해결하러 나온 건지 이해하기 쉬울 거예요. 즉, 앞으로 무슨 프레임워크가 나오든 배워서 사용할 수 있어요.

  • 프레임워크 없이 자바스크립트만으로 다양한 예제를 따라 해 보는 건 생각보다 더 중요해요. 자바스크립트 기반이 단단하게 잡혀 있으면, 프레임워크를 사용하다가 문제에 부딪힐 때, 이게 자바스크립트 관련 문제인지, 프레임워크 관련 문제인지를 분별할 수 있게 돼요.

  • 기존에 자바스크립트를 국소적으로만 사용했다면, 이 강좌의 다양한 예제를 통해 자바스크립트를 사용해 보는 영역이 넓어질 거예요. 마치, 자바스크립트와 함께 갈 수 있는 영토가 확장되는 것 같은 자신감을 얻으시는 게 이 강좌의 가장 큰 목표에요.

무료 에피소드

강좌를 구매하기 전에 무료 에피소드를 통해 전체적인 강좌의 톤, 제가 말하는 속도나 설명하는 스타일을 보시고 잘 맞는지 확인해 보세요.

1. 배포와 번들러의 기초

본격적인 강좌에 들어가기 앞서,

  • 우리가 만드는 프론트엔드 작업물이 어떤 과정을 통해 빌드 되고 어떻게 배포 되는지,

  • 번들러(bundler)라 불리는 것들의 역할이 뭔지

  • 대표적인 번들러인 Parcel 와 Vite 을 사용해보고

  • 간단한 작업물을 Vercel 에 배포하는 과정

  • 그리고 Tailwind CSS 를 빈 프로젝트에 붙이는 과정까지

앞으로 만들게 될 많은 미니 프로젝트를 위한 기초를 다져봅니다

📺 영상 보기: https://youtu.be/j541SGnGcew

2. Tailwind CSS 를 왜?

Tailwind CSS 는 일반적으로 Bundler 와 함께 사용됩니다. 그냥 tailwind.css 라는 파일을 link 태그로 추가하지 않고요. 왜 그럴까요?

그리고 저는 왜 Tailwind CSS 를 사용할까요? Tailwind CSS 가 가져다주는 장점을 설명합니다.

📺 영상 보기: https://youtu.be/4fqP2j_ZekA

3. Node.js 버전 관리자

Node.js 의 버전은 빠르게 올라가고 있다 보니, 여러 프로젝트에서 사용하는 Node.js 버전이 제각기 다른 경우가 흔합니다.

이럴 때 관리를 잘 해주지 않으면, 엉뚱한 버전의 Node.js 를 사용해서 문제가 생기기도 하는데요.

세 가지 Node.js 버전 매니저를 소개하고 그 원리와 장단점을 설명합니다.

📺 영상 보기: https://youtu.be/4CEzGp_cH1k

4. 터미널 프롬프트 꾸미기

터미널 프롬프트를 원래 있는 그대로 사용하시나요? 몇 가지 툴을 설치함으로써 아름답고 실용적인 터미널 생활을 해보세요.

📺 영상 보기: https://youtu.be/HUn1ePxTTrM

유료 에피소드

아직 유료 부분의 커리큘럼은 확정되지 않았어요. 강좌가 완성되기 전까지는 일부 빠지거나 추가될 수 있음을 미리 알려드립니다.

1. 기본 DOM API 배우기

  • innerHTML

  • createElement

  • appendChild

  • insertBefore

  • addEventListener

등의 API 를 차근차근 배워볼 생각이에요. 이게 정말 모든 프론트엔드 개발의 근간이에요.

그 이후로 쭉, 각 에피소드의 예제들을 이 API 들을 가지고서 개발할 건데요 (React, Vue.js 같은 프레임워크 없이) 이게 어떻게 불편하고 어떤 문제가 있어서 프레임워크를 쓰게 되는지 자연스레 설명하게 될 예정입니다.

2. 쇼핑몰 상품 리스트 + 장바구니

쇼핑몰을 통째로 만드는 건 아니고, 그냥 상품 리스트와 장바구니가 있는 화면을 구현해 봅니다. 목표는 DOM API 를 직접 사용하며 동적인 인터랙션을 구현해 보는 건데요.

장바구니에 넣고 빼고, 숫자 늘리고 줄이고, 같은 데이터를 화면 여기저기에 잘 적용하는 과정을 보여드리면서 아주 예전에는 어떻게 구현했었는지, 어떤 불편함이 있었는지, 이런 히스토리와 함께 React 같은 프레임워크가 이런 상황을 어떻게 나아지게 했는지 약간의 역사 공부 비슷한 게 곁들여질 것 같아요.

3. express 로 배우는 웹서버의 기초

예제들을 진행하면서 100% 프론트엔드 코드만으로 할 수는 없고 백엔드가 필요한 순간들이 있을 텐데요. express 를 가지고 간단한 로컬 웹서버를 만들어 봅니다.

요즘 Vercel 이나 Netlify 에서 제공해 주는 Serverless Function 이 참 쉽고 좋은데요. 그게 있기 전의 시절을 상상하며 프론트엔드 코드 + express 서버가 같이 돌아가는 상황을 테스트해봅니다.

이 강좌는 이후 에피소드에서 만날 cors 문제를 해결하기 위함도 있고, 또 다른 에피소드(hint: ssr)를 위한 준비 단계이기도 합니다.

4. Array methods

forEach, filter, map, reduce 등의 Array methods 에 부담을 느끼시는 분들이 계신 거 같아서, 한번 연습을 해보는 시간을 가지는 건 어떨까 하는 생각이 들어요. 이건 진짜 기초 체력을 단련하는 느낌의 에피소드에요.

5. npm library 만들기

늘 가져다가 사용하는 무수히 많은 npm 라이브러리. 직접 만들고 배포해 보신 적 있나요? npm 라이브러리의 기본적인 구조, 형태를 알아보고, 직접 배포까지 가봅시다. 그리고, 제대로 된 라이브러리를 개발하고 운영하기 위해 필요한 디테일들을 소개해 드립니다.

6. Mini jQuery 만들기

옛날 옛적에 jQuery 라는 라이브러리가 있었는데요. 에피소드 5에서는 거의 아무 기능 없는 라이브러리를 배포해 봤다면, 이번엔 비교적 제대로 된 라이브러리를 만들어 배포해 봅니다.

이 에피소드에서는 기본적인 class 사용과, class 없이도 closure 를 통해 비슷한 효과를 내는 방법을 비교해 봅니다. 그리고 나무를 흔든다는 게 뭔지도 배우게 됩니다.

7. 마크다운으로 정적 블로그 만들기

Jekyll, Gatsby, Next.js 등을 써서 정적인 웹사이트를 만들어보셨거나, 그렇게 만들어진 웹사이트를 구경해 본 적 있으신가요?

Next.js 로 마크다운 정적 블로그 만들기

이런 튜토리얼도 많이 보셨을 거예요. 이 에피소드에서는 저런 과정을 따라 해보지 않아요. Jekyll, Gatsby, Next.js 이런 거 하나도 없이, 그냥 맨바닥에서부터 Node.js 하나만 가지고 정적 웹사이트를 만드는 과정을 한 땀 한 땀 밟아 봅니다.

어려울 것 같겠지만 오히려 생각보다 더 단순해요. 정적인 웹사이트를 왜 만들고, 어떻게 만드는지 기본을 밟아보시고 나면, 저런 프레임워크로 정적 웹사이트 만드는 과정을 잘 이해하실 수 있게 돼요. 왜냐면, 이 에피소드에서 저와 함께 밟을 과정의 일부를 이렇게 저렇게 추상화해 놓은 게 저 프레임워크들이니까요.

뭘 추상화한 건지 그 대상을 모르면, 당연히 추상화된 결과물도 이해하기 쉽지 않겠죠.

8. 영화 검색 웹사이트

이건 약간 큰 에피소드가 될 예정인데요. 사실 별다른 걸 만들진 않아요. 영화 목록 보여주는 페이지 + 검색하면 검색 결과 보여주는 페이지, 이렇게 딱 두 개만 만들 거예요. 하지만 두 서브 에피소드로 나뉠 가능성이 높아요.

왜냐면, 브라우저의 history API 를 배워볼 예정이에요. 그게 무슨 뜻이냐면, React Router 같은 client side routing 을 직접 구현해 보게 된다는 거예요. 너무 깊게 가진 않을 거예요. 아주 단순한 수준에서 어떤 일들이 벌어지는지 이해할 수 있게 실습해 봅니다.

그런 후에는, server side rendering (SSR) 을 express 서버로 구현해 봅니다. Next.js 를 사용하면 SSR 를 자동으로 해줘서 좋다던데, 그게 도대체 뭔지? SSR 에 늘 따라다니는 Hydration 이라는 건 또 뭔지?

순수하게 Node.js + express 가지고 직접 해봅니다.

저런 걸 직접 구현한다고 생각하면 되게 어렵고 막막할 것 같지만, 의외로 안 그럴 거에요. 빈 캔버스 위에 핵심 기능만 딱딱 구현해 나가니 눈에 더 잘 보일 거예요.

이미 프레임워크가 놓여 있는 상태에서는 뭐가 뭔지 구분하려면 너무 많은 지식이 필요하거든요.

그래서 이런 연습이 도움 될 거예요.

9. callback, promise, async / await

기본적인 개념들은 알고 계시다는 전제하에 약간의 연습 세션을 가져보고자 합니다. Array methods 연습 에피소드와 비슷한 느낌이에요. 자바스크립트에서의 비동기 다루는 건 마치 기초 체력과도 같습니다.

10. Form 다루기

<form action="/save" method="post">

이게 도대체 뭐죠? action, method 를 form 에 한 번도 안써본 분들에게 알려드리는 옛날 옛적의 form 구현 방식을 설명해 드립니다.

form 을 submit 하는 방식이 ajax라 불리던 것의 등장으로 어떻게 바뀌었고, 요즘은 또 어떻게 달라졌는지.

react-hook-form 같은 라이브러리는 왜 쓰게 됐는지. 안 쓰고 할 순 없을지? 한번 얘기해 볼게요.

그리고 한발 나아가, 자바스크립트 만으로 Form 라이브러리를 만든다면 어떻게 해볼 수 있을지? 간단한 함수를 한두 개 만들어보시죠.

11. CLI 만들기

커맨드라인 용 앱은 어떻게 만들까요? 당연히 자바스크립트로 가능합니다. 어떤 구성을 갖춰야 하고, 어떤 원리로 돌아가는지 살펴봅니다. npm install -g <아무 이름 여러분이 정하는 대로> 가 실현될 거예요.

강의 가격

풀 패키지 (€ 100)
모든 에피소드 (미정, 10개 혹은 이상)
모든 예제 소스 코드 제공
구매자 전용 비공개 Discord 채널

사전 구매하실 분을 찾습니다.

현재 강좌를 기획하고 제작을 막 시작하는 단계여서, 완성된 강좌를 구입하시기까지는 긴 시간이 걸릴 예정이에요.

그래서 제가 강좌를 만드는 동안 저와 함께 하실 사전 구매자분들을 찾고 있어요. 저와 Discord 비공개 채널에 모여서 같이 배워나가고 피드백을 교환할 수 있는 분들이면 좋겠어요. 강좌 커리큘럼에 대해 큰 조언을 주셔야 할 것 같은 부담은 가지 실 필요 없어요. 강의 들으시다 저에게 궁금하신 것 물어보시고, 다른 수강생분들과 토론도 하시고, 강좌에서의 설명이 부족했다고 판단되면 제가 추가 촬영을 하거나, 특정 주제에 관한 분량을 조절하는 등 자연스레 다듬어져 갈 거라 생각해요.

65유로의 할인된 금액으로 모든 에피소드를 다 보실 수 있어요. 다만 인원에 어느 정도 제한을 둘거라, 일단 구매 신청을 해주시면, 개별 안내를 드릴게요.

(업데이트: 사전 구매는 종료되었습니다. 강좌가 완성되는 대로 찾아뵙겠습니다.)

사전 구매 FAQ

사전 구매는 얼마인가요?

사전 구매는 65 유로이며, 풀 패키지에 해당하는 access 를 얻으시게 됩니다. 커리큘럼이 확정되지 않았기에 에피소드 개수도 아직은 알 수 없지만, 최소 10개를 예상합니다.

사전 구매는 어떻게 하나요?

어느 정도 활발한 소규모 그룹과 함께 논의하며 강좌를 만들어 갈 예정이라, 모든 분을 받지 못할 수도 있어요. 일단 제게 트위터 (@eunjae_lee_ko) 로 디엠을 주시면 제가 답변드릴게요.

새 에피소드는 얼마나 자주 올라오나요?

한 달에 한 에피소드를 촬영해서 바로 공유드리는 걸 목표로 하고 있어요. 마음 같아선 두 달에 세 편 정도 찍고 싶은데요. 제 개인적인 사정에 따라 아주 규칙적이진 못할 수 있는 점을 미리 양해 부탁드려요.

환불이 되나요?

사전 구매 후 막상 영상 올라오는 걸 기다리기 힘드시거나, 다른 분의 이미 완성된 강좌를 수강하고 싶으시거나, 혹은 제 강좌의 퀄리티 혹은 방향이 구매자분의 기대와 다를 수 있어요.

완성된 강좌를 구입하신 게 아니기 때문에 충분히 그러실 수 있다 생각해요. 그래서, 이유 상관없이 결제하신 날짜로부터 6개월 이내에 요청 주시면 전액 환불해드려요. 이 강좌를 만드는 과정이 느리게 진행될 것을 감안해서 6개월이라는 기간을 잡았어요.

FAQ

Tailwind CSS 를 몰라요

제가 간단하게 소개를 할 예정이에요. 하지만 Tailwind CSS 자체가 기존의 CSS 문법을 간략화 한 정도이지 특별히 새롭거나 복잡한 기술이 아니에요. 예를 들어 display: flex 라는 코드를 flex 라는 class name 으로 대체한 것뿐이에요.

하지만 그럼에도 Tailwind CSS 의 컨벤션을 익히는 게 부담스러우시거나, 아니면 그냥 CSS 자체가 아직은 익숙지 않으실 수 있어요. 그런데 이 강좌가 결과물을 아름답게 만드는데 큰 노력을 기울이진 않기 때문에, 강좌를 따라 하시다가 CSS 부분은 적당히 스킵 하셔도 문제없어요.

일단 수강을 해보시다가 이 부분이 영 아쉬우시다면 환불 기간 내에만 요청 주시면 전액 환불해드려요.

커리큘럼은 확정된 건가요?

현재 10 개 정도의 커리큘럼을 생각해 놓았어요. 하지만 사전 구매하신 분들과 지속적으로 이야기를 나누는 과정에서 에피소드의 순서를 바꾸거나, 무언가를 빼거나, 새로 넣는 등의 변화가 계속 있을 예정이에요. 일단 개수로 따지면 최소 10개의 에피소드 주제는 준비되어 있어요. 그리고 전체 러닝 타임은 녹화를 해봐야 알 수 있어, 총 몇 시간짜리 강의라 말씀드리기 어려워요. 한 에피소드 당 30-90분 사이지 않을까 싶어요. 너무 길어서 늘어지지 않도록, 하지만 필요한 정보 차근차근 서두르지 않으며 배우실 수 있도록 준비하겠습니다.

환불도 되나요?

사전 구매하시는 분들은 위의 사전 구매 FAQ 섹션의 환불 항목을 참고해 주세요.

정식 강좌 오픈 후에 구입하신 분들은 구입으로부터 30일 이내에 환불 요청을 주시면 이유 상관없이 전액 환불해드립니다.

자바스크립트 문법도 가르쳐주시나요?

기본적으로 자바스크립트를 어느 정도는 할 줄 아는 분들을 대상으로 생각하고 있어요. 문법은 적당히 아시거나, 모르는 건 검색해서 알아내실 수 있을 거라 가정하고 진행하기 때문에, 강의 도중 문법에 대한 설명을 하진 않을 예정이에요.

정확히 어느 정도 실력이어야 하는지 딱 선을 긋기 어렵지만, 예를 들어, 숫자로 채워진 배열을 파라메터로 받아 그 합을 구하는 함수를 구현하실 수 있으신가요? 그렇다면 들어보셔도 괜찮다 생각해요. 혹시 진행하다가 너무 따라가기 어렵다면 환불 기간 내에 전액 환불해드려요.

React 의 내부 디테일을 알고 싶어요

React 혹은 Vue.js 의 특정 API (예: useEffect) 가 왜 그렇게 돌아가는지 자세히 알고 싶으신가요? 이 강좌를 통해 프레임워크 없이 순수 자바스크립트 만으로 구현하는 방식들을 배우시고 나면, 그런 프레임워크에서 왜 그렇게 했는지 이해하는 데 도움이 되겠으나, 거기서 한발 나아가 특정 프레임워크의 API 를 몇 개 골라서 다루기에는 강좌의 범위가 너무 커질 것 같아요.

학생 할인이 되나요?

아직 학교를 다니고 계시거나, 취업 준비를 하고 계시다면, 그걸 증명하는 무언가를 hey@learnwitheunjae.dev 으로 보내주세요. 30% 할인 쿠폰을 보내드려요.

(하지만 사전 구매하시는 분들께는 이 할인이 적용되지 않아요.)

안녕하세요, 이은재입니다 👋

Eunjae Lee

안녕하세요. 이은재입니다. 사람 한 명과 고양이 두 마리와 함께 살고 있어요. 집에서 멍 때리고 냥이들 바라보는 걸 좋아하고, 저녁 식사 후에 한 시간 정도 산책하는 걸 즐깁니다. 시끄럽고 붐비는 도심이 부담돼서 파리 인근 소도시에 살고 있고, 새 구경을 좋아하고, 채소를 키우는 취미가 있어요.

좀 더 개발 관련 얘길 하자면, 2022년 11월부터 Storyblok 이라는 Headless CMS 서비스를 만드는 곳에서 개발자 유저들을 위한 extension platform 을 만들고 있어요.

2019년에 Algolia 라는 클라우드 기반의 검색 솔루션 회사에 입사하기 위해 프랑스로 이주했어요. 그 회사에서 InstantSearch 라는 오픈소스 UI 라이브러리를 만드는 일을 했어요. Vanilla JavaScript, React, Vue.js, Angular 총 네 가지 버전으로 라이브러리를 제공하기 위해 공통 로직을 따로 관리하고 각 flavor 는 최소한의 wrapper 이도록 하는 작업에 시간을 가장 많이 썼어요. 그 외에도 업무적으로 여러 오픈 소스 프로젝트에 참여했어요.

그전에는 밸류포션이라는 스타트업을 위해 한국과 싱가폴에서 풀스택으로 3년 정도 일했고, 그 전에는 카카오와 다음 커뮤니케이션에서 4-5년간 프론트엔드 대부분 + 안드로이드 조금 다뤘어요.

© 2023 Eunjae Lee. All rights reserved.