Code Monkey home page Code Monkey logo

javascript-mission's Introduction

Hits

gmail naver

๐Ÿ˜Ž Skills

Platforms & Languages

ํŒŒ์ด์ฌ ํŒŒ์ด์ฌ

HTML css javascript React Express Node.js MySQL

flutter Dart

๐Ÿง Analysis

yujin's GitHub stats

๐Ÿ˜ฒ Experience

๋ถ€์ŠคํŠธ์บ ํ”„ 6๊ธฐ ์›น ํ’€์Šคํƒ ์ฑŒ๋ฆฐ์ง€ (2021.07.19 - 2021.08.13)
๋ถ€์ŠคํŠธ์บ ํ”„ 6๊ธฐ ์›น ํ’€์Šคํƒ ๋ฉค๋ฒ„์‹ญ (2021.08.23 ~ )

javascript-mission's People

Contributors

ykss avatar yujin0719 avatar

Watchers

 avatar

javascript-mission's Issues

[Mission1] ์ถ”๊ฐ€ ๊ตฌํ˜„์‚ฌํ•ญ - setState ๊ตฌํ˜„

TodoList ํ•จ์ˆ˜์— setState(nextData)๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ์ด ํ•จ์ˆ˜๋Š” ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ์ดˆ๊ธฐ ์ƒ์„ฑ ์‹œ ๋„˜๊ฒผ๋˜ data ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ nextData๋กœ ๋Œ€์ฒดํ•˜๊ณ 
  • ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ค์‹œ ๋ Œ๋”๋งํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•œ ๋’ค, new TodoList(...) ํ•˜๋Š” ์ฝ”๋“œ ์ดํ›„์— ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์˜ ์ธ์Šคํ„ด์Šค์— todoList.setState(์ƒˆ๋กœ์šด ๋ฐฐ์—ด) ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋งŒ ๋‹ค์‹œ ๋„ฃ์—ˆ์„ ๋•Œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‹ค์‹œ ๋ Œ๋”๋ง ๋˜๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

  • setState ํ•จ์ˆ˜ ํ˜ธ์ถœ ํ›„ ๋‹ค์‹œ todoList.render()๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, setState ํ•จ์ˆ˜ ๋‚ด์—์„œ ํ™”๋ฉด์„ ๋‹ค์‹œ ๋ Œ๋”๋งํ•˜๋Š” ๊ฒƒ๊นŒ์ง€ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[Mission1] ์ถ”๊ฐ€ ๊ตฌํ˜„์‚ฌํ•ญ - isCompleted ๊ตฌํ˜„

  • data์˜ ๊ฐ object์— text์™ธ์— isCompleted ๋ผ๋Š” ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ๊ฐ’์€ true, ํ˜น์€ false ๊ฐ’์„ ์ง€์ •ํ•ด์ฃผ์„ธ์š”.
var data = [
  { 
    text: '์ฝ”๋”ฉํ•˜๊ธฐ',
    isCompleted: true
  },
  {
    text: '์ง‘์•ˆ ์ฒญ์†Œํ•˜๊ธฐ',
    isCompleted: false
  }
]
  • TodoList ์ปดํฌ๋„ŒํŠธ ๋‚ด์— text ๋ Œ๋”๋ง ์‹œ, isCompleted ๊ฐ’์ด true์ธ ๊ฒฝ์šฐ <s> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์‚ญ์„ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š” ๊ฑธ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[Mission1]

<html>

<head>
  <title>Mission 1</title>
  <meta charset="utf-8" />
</head>

<body>
  <div id="todo-list"></div>
  <script>
    var data = [
      {
        text: 'JS ๊ณต๋ถ€ํ•˜๊ธฐ'
      },
      {
        text: 'JS ๋ณต์Šตํ•˜๊ธฐ'
      }
    ]
	// ์ด๊ณณ์—์„œ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜์„ธ์š”!
  </script>
</body>
</html>

script ํƒœ๊ทธ ๋‚ด์— ์•„๋ž˜์˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋งŒ์กฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

TodoList๋ผ๋Š” ์ด๋ฆ„์˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ๊ตฌํ˜„์‚ฌํ•ญ ์„ค๋ช…

  • function style์˜ ๋ฌธ๋ฒ•, class style์˜ ๋ฌธ๋ฒ• ์–ด๋Š ๊ฒƒ์„ ์‚ฌ์šฉํ•ด๋„ ์ข‹์Šต๋‹ˆ๋‹ค.
  • new ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ์˜ data๋ฅผ ๋„˜๊ฒจ๋ฐ›์Šต๋‹ˆ๋‹ค.
var data = [
  {
    text: 'JS ๊ณต๋ถ€ํ•˜๊ธฐ'
  },
  {
    text: 'JS ๋ณต์Šตํ•˜๊ธฐ'
  }
]

var todoList = new TodoList(data);์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ํŒŒ๋ผ๋ฉ”ํ„ฐ๋ฅผ ๋„˜๊ธฐ๊ณ , ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ์— render ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ๋„˜๊ฒจ๋ฐ›์€ data๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ๊ฐ ๋ฐฐ์—ด์ฒจ์ž์˜ text๋ฅผ html string์œผ๋กœ ๋งŒ๋“  ๋’ค, todo-list๋ผ๋Š” id๋ฅผ ๊ฐ€์ง„ div์— innerHTML์„ ์ด์šฉํ•ด ๋ Œ๋”๋ง ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.
    • ์ด ํ•จ์ˆ˜๋Š” ๋ณ„๋„์˜ ํŒŒ๋ผ๋ฉ”ํ„ฐ ์—†์ด todoList.render() ํ˜•ํƒœ๋กœ ์‹คํ–‰๋˜๋„๋ก ๋งŒ๋“ญ๋‹ˆ๋‹ค.

Tip

  • new ํ‚ค์›Œ๋“œ์™€ this ํ‚ค์›Œ๋“œ๊ฐ€ ์ƒ์†Œํ•˜์‹  ๋ถ„์„ ์œ„ํ•ด ๊ฐ„๋‹จํ•œ ์ƒ˜ํ”Œ์„ ์ค€๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.
    • function Band(name) {
        // ํŒŒ๋ผ๋ฉ”ํ„ฐ๋กœ ๋ฐ›์€ name์„ this.name์œผ๋กœ ํ• ๋‹น
        this.name = name;
        // Band ํ•จ์ˆ˜์— perform ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ๊ทธ๊ฒƒ์„ this.perform ์— ํ• ๋‹น
        this.perform = function(){
          console.log(`${this.name} ๋ฐด๋“œ๊ฐ€ ๊ณต์—ฐ์„ ํ•ฉ๋‹ˆ๋‹ค!`);
        }
        this.performHTML = function() {
          document.querySelector('#stage').innerHTML = `<div>${this.name} ๋ฐด๋“œ๊ฐ€ ๊ณต์—ฐ์„ ํ•ฉ๋‹ˆ๋‹ค!</div>`
        }
      }
      
      // new ํ‚ค์›Œ๋“œ๋ฅผ ์ด์šฉํ•ด Band ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋งŒ๋“ค๊ธฐ
      // new๋ฅผ ๋ถ™์ด๊ณ  ํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค, ํ•จ์ˆ˜ ๋‚ด this๋Š” ์ƒˆ ํ•จ์ˆ˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
      var band1 = new Band('Cold Play'); // band1.name์€ ๋ฌด์—‡์ผ๊นŒ์š”? band1.perform()์„ ์‹คํ–‰ํ•˜๋ฉด ์–ด๋–ค ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?
      
      // ๋‚˜๋จธ์ง€ band2, band3, band4์— ๋Œ€ํ•ด์„œ๋„ ์ƒ๊ฐํ•ด๋ด…์‹œ๋‹ค.
      var band2 = new Band('Foo Fighters');
      var band3 = new Band('Crying Nut');
      var band4 = new Band('Jaurim');
      
      // ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?
      band1.performHTML();
      // ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚ ๊นŒ์š”?
      band2.performHTML();
  • data์™€ html string์„ ๊ฒฐํ•ฉํ•˜๊ธฐ ์œ„ํ•ด + ๋ฅผ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • var html = '<div>' + data[0].text + </div>;
  • string template์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • // ๋ฌธ์ž์—ด์„ '์ด ์•„๋‹Œ `(ํƒญ ์œ„์— ์žˆ๋Š” ํ‚ค)๋กœ ๋ฌถ๋Š” ๊ฒƒ์— ์œ ์˜ํ•˜์„ธ์š”!
      var html = `<div>${data[0].text}</div>`
      
  • ํŠน์ •ํ•œ div ๋‚ด์— html์„ ๋„ฃ์œผ๋ ค๋ฉด ์•„๋ž˜์˜ ๋ฌธ๋ฒ•์„ ํ™œ์šฉํ•˜์„ธ์š”.
    • document.querySelector('#todo-list').innerHTML = 'html string';

์ฝ์œผ๋ฉด ๋„์›€์ด ๋  ๊ธ€๋“ค

์•„๋ž˜ ๋‚ด์šฉ๋“ค์€ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ์ง€๋งŒ, ๊ตฌํ˜„ํ•ด๋ณด๋ฉด ์žฌ๋ฐŒ์„(?) ๋‚ด์šฉ๋“ค์ž…๋‹ˆ๋‹ค.

  • new ํ‚ค์›Œ๋“œ๋กœ ํ•จ์ˆ˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ์˜ฌ๋ฐ”๋ฅธ ํŒŒ๋ผ๋ฉ”ํ„ฐ๊ฐ€ ๋„˜์–ด์˜ค์ง€ ์•Š์„ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๊ฒŒ ํ•˜๊ธฐ
    • null ํ˜น์€ undefined๊ฐ€ ๋„˜์–ด์˜ค๋ฉด?
    • array๊ฐ€ ์•„๋‹Œ ํ˜•ํƒœ๋กœ ๋„˜์–ด์˜ค๋ฉด?
    • ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์ด ์ด์ƒํ•˜๋ฉด?
  • new ํ‚ค์›Œ๋“œ ์•ˆ ๋ถ™์ด๊ณ  ํ•จ์ˆ˜ ์‹คํ–‰ ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒํ•˜๊ฒŒ ํ•˜๊ธฐ
    • function ํ˜•ํƒœ์˜ ์„ ์–ธ์ธ ๊ฒฝ์šฐ์—๋งŒ ํ•ด๋‹น

์—๋Ÿฌ๋Š” ์šฐ์„  ์—๋Ÿฌ๋ฅผ ๋‚ด์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ throw new Error("error message") ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.

[Mission1] ์ถ”๊ฐ€ ๊ตฌํ˜„์‚ฌํ•ญ - ๋‹ค์ค‘ ์ปดํฌ๋„ŒํŠธ

๋ณด๋„ˆ์Šค ๊ตฌํ˜„์‚ฌํ•ญ

html

  • <div id="todo-list"></div> ์™ธ์˜ ๋‹ค๋ฅธ div๋ฅผ ๋‘ ๊ฐœ ๋” html ์ฝ”๋“œ์— ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • div์˜ id๋Š” ์ ๋‹นํ•œ ์ด๋ฆ„์œผ๋กœ ์ง€์–ด์ฃผ์„ธ์š”.

js

  • var data = [{ ... }] ์™ธ์— todo๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” array data๋ฅผ ๋‘ ๊ฐœ ๋” ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • todo์˜ ๋‚ด์šฉ์€ ๋ณธ์ธ์˜ ํ˜„์žฌ todo๋ฅผ ๋‹ด์•„์„œ ๋„ฃ์œผ๋ฉด ๋” ์ข‹๊ฒ ์ฃ ?
  • TodoList ์ปดํฌ๋„ŒํŠธ๋ฅผ ์ด ์„ธ ๊ฐœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ปดํฌ๋„ŒํŠธ์—๋Š” ์ œ๊ฐ€ ๋„ฃ์–ด๋‘” data์™€ #todo-list์— ๋ Œ๋”๋งํ•˜๊ณ , ๋‚˜๋จธ์ง€ ๋‘ ๊ฐœ๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ์ถ”๊ฐ€ํ•˜์‹  div + data๋ฅผ ํ™œ์šฉํ•ด์„œ ๋งŒ๋“ค์–ด์ฃผ์„ธ์š”.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.