2019/08/25 TIL(Today I Learn)

Twittler ๊ณผ์ œ๋ฅผ ๋๋ƒˆ๋‹ค.

  • ์ง€๋‚œ 22์ผ Q&A ์„ธ์…˜์—์„œ class ์ •์˜ ๋‚ด์— createElement์™€ appendChild ๋“ฑ DOM ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์–ด๋””์— ์ž‘์„ฑํ•ด์•ผ ํ•˜๋Š”์ง€ ์งˆ๋ฌธํ–ˆ์—ˆ๊ณ , ๊ทธ ๋‹ต๋ณ€์œผ๋กœ ์•Œ๋ ค์ฃผ์‹  ๋ฐฉ๋ฒ•์„ ์ ์šฉํ–ˆ๋‹ค.
  • ์ƒˆ ํŠธ์œ—์ด ์ƒ์„ฑ๋˜๋ฉด ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ํŠธ์œ— ๋ฆฌ์ŠคํŠธ Array์— push๋ฅผ ํ•ด์ฃผ๊ณ  array๋ฅผ ํ†ต์งธ๋กœ localStorage์— ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์ด๋ ‡๊ฒŒํ•˜๋ฉด ์œ ์ € ํ•„ํ„ฐ๋ง์„ ํ•  ๋•Œ array ๋ฉ”์„œ๋“œ์ธ filter๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ  ๋‚˜์ค‘์— localStorage๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์ด์šฉํ•  ์‹œ์— ๋” ์ ์ ˆํ•˜๋‹ค๊ณ  ์•Œ๋ ค์ฃผ์…จ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ด ๋ฐฉ์‹์œผ๋กœ ์ˆ˜์ •์„ ํ•ด๋ณด๋‹ˆ ์ƒ๊ฐ๋ณด๋‹ค ๋” ์žฅ์ ์ด ์žˆ์—ˆ๋‹ค. ์šฐ์„ ์€ ์ฝ”๋“œ๊ฐ€ ์ „์ฒด์ ์œผ๋กœ ๊น”๋”ํ•ด์กŒ๊ณ , for๋ฌธ๋„ ์•ฝ๊ฐ„ ์ค„์—ˆ๋‹ค.
  • ํ•œ ๊ฐ€์ง€ ์˜ˆ์‹œ๋กœ, ์•„๋ž˜๋Š” ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•˜๋Š” ์ฝ”๋“œ๋‹ค. ์˜ˆ์ „ ์ฝ”๋“œ๋Š” localStorage์— 5๊ฐœ์˜ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด for ๋ฌธ์„ ๋Œ๋ ธ๋Š”๋ฐ, ์ˆ˜์ •๋œ ์ฝ”๋“œ์—์„œ๋Š” tweetList๊ฐ€ ์žˆ๋Š”์ง€๋งŒ ํ™•์ธํ•˜๋ฉด ๋๊ธฐ ๋•Œ๋ฌธ์— for ๋ฌธ์„ ์—†์•จ ์ˆ˜ ์žˆ์—ˆ๋‹ค.
  • ํŠธ์œ—์„ ์ถœ๋ ฅํ•˜๋Š” render ํ•จ์ˆ˜๋Š” ์‹ค์งˆ์ ์œผ๋กœ ๊ธฐ์กด ์ฝ”๋“œ์™€ ๋™์ผํ•œ ํšŸ์ˆ˜๋กœ for ๋ฌธ์„ ์‹คํ–‰ํ•˜๊ธด ํ•˜์ง€๋งŒ, for๋ฌธ์„ ํ•จ์ˆ˜ ์•ˆ์— ๋„ฃ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ Œ๋”๋ง์ด ํ•„์š”ํ•  ๋•Œ ๊ฐ„๋‹จํžˆ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋งŒ ํ•ด์ฃผ๋ฉด ๋˜์–ด์„œ ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•ด์กŒ๋‹ค.

    /* AS-IS */
    window.addEventListener('DOMContentLoaded', function(){
    // data.js์— ์žˆ๋Š” ํŠธ์œ—์ด LocalStorage์— ์—†์„ ๊ฒฝ์šฐ ์ „๋‹ฌ
    for(let i in DATA){
    let value = JSON.stringify(DATA[i]);
    if(localStorage.getItem(i) !== value){
      localStorage.setItem(i, value);
    }
    }
    // LocalStorage์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ํŠธ์œ— ์ถœ๋ ฅ
    for(let i = 0; i < localStorage.length; i++){
    let tweet = new Tweet(JSON.parse(localStorage.getItem(i))); // Object ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
    tweet.print();
    }
    });
    
    /* TO-BE */
    window.addEventListener('DOMContentLoaded', function(){
    localStorage.getItem('tweetList') ? ( // ์‚ผํ•ญ ์กฐ๊ฑด ์—ฐ์‚ฐ์ž
    getFromStorage()
    ) : (
    tweetList = DATA,
    addToStorage(tweetList)
    );
    // tweetList ์ถœ๋ ฅ
    render();
    });
    
  • ๋˜ ์•ฝ๊ฐ„์˜ ๊ฐœ์„ ๋œ ์ ์œผ๋กœ moment ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์‹œ๊ฐ„์„ "00 minutes ago" ์‹์œผ๋กœ ํ‘œ์‹œํ•˜๋Š”๋ฐ, ์ด๊ฒŒ ๊ทธ๋‚˜๋งˆ ์›€์ง์ด๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๋Š” ๊ฒƒ? ๊ธฐ์กด์—๋Š” ์ƒˆ๋กœ ํŠธ์œ—์„ ํ•ด๋„ ์ด์ „์— ์ž‘์„ฑ๋œ ํŠธ์œ—์„ ๊ณ ์น˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—(์ƒˆ๋กœ๊ณ ์นจ์„ ํ•˜์ง€ ์•Š๋Š” ์ด์ƒ) ํ•ญ์ƒ "a few seconds ago"๋ผ๊ณ  ํ‘œ์‹œ๋˜๋Š”๋ฐ, ์ด์ œ๋Š” ์ƒˆ๋กœ์šด ํŠธ์œ—์„ ํ•˜๊ฑฐ๋‚˜ ์œ ์ € ํ•„ํ„ฐ๋ง ์‹œ์— ๋ Œ๋”๋ง์„ ์ƒˆ๋กœ ํ•ด๋ฒ„๋ฆฌ๋‹ˆ๊นŒ ์‹œ๊ฐ„ ํ‘œ์‹œ๊ฐ€ ์ž์ฃผ ๋ฐ”๋€๋‹ค.
โ† ์ด์ „ ๊ฒŒ์‹œ๋ฌผ2019/08/27 TIL(Today I Learn)
๋‹ค์Œ ๊ฒŒ์‹œ๋ฌผ โ†’2019/08/21 TIL(Today I Learn)
๋ชฉ๋ก