HackerNews JS(4) - 템플릿화

ha·2022년 7월 28일
0

HackerNews JS

목록 보기
4/6

템플릿화

function newsFeed() {
  const newsFeed = getData(NEWS_URL);
  const newsList = [];
  let template = `
    <div class="container">
      <h1>Hacker News</h1>
      <ul>
        {{__news_feed__}}
      </ul>
      <div>
        <a href="#/page/{{__prev_page__}}">이전 페이지</a>
        <a href="#/page/{{__next_page__}}">다음 페이지</a>
      </div>
    </div>
  `;
  
  for (let i = (store.currentPage -1)*10; i <store.currentPage*10; i++) {
    newsList.push(`
      <li>
        <a href="#/show/${newsFeed[i].id}">
          ${newsFeed[i].title} (${newsFeed[i].comments_count})
        </a>
      </li>
    `);
  }

  template = template.replace('{{__news_feed__}}', newsList.join(''));
  template = template.replace('{{__prev_page__}}', store.currentPage - 1 === 0 ? 1 : store.currentPage - 1);
  template = template.replace('{{__next_page__}}', store.currentPage + 1 > newsFeed.length / 10 ? store.currentPage : store.currentPage + 1);
  
  container.innerHTML = template;
}

Tailwind Css

<div class="p-6 bg-white mt-6 rounded-lg shadow-md transition-colors duration-500 hover:bg-green-100">
	<div class="flex">
          <div class="flex-auto"> // 타이틀 댓글 공간 간격 조정 
            <a href="#/show/${newsFeed[i].id}">${newsFeed[i].title}</a>  
          </div>
          <div class="text-center text-sm">
            <div class="w-10 text-white bg-green-300 rounded-lg px-0 py-2">${newsFeed[i].comments_count}</div>
          </div>
     </div>
     //아래 아이콘 파트
     <div class="flex mt-3">
          <div class="grid grid-cols-3 text-sm text-gray-500">
            <div><i class="fas fa-user mr-1"></i>${newsFeed[i].user}</div>
            <div><i class="fas fa-heart mr-1"></i>${newsFeed[i].points}</div>
            <div><i class="far fa-clock mr-1"></i>${newsFeed[i].time_ago}</div>
          </div>  
     </div>
</div>


0개의 댓글