템플릿 엔진과 CRUD

Yeonn·2024년 10월 29일
0

Backend 👀

목록 보기
5/10
post-thumbnail

❓ WEB 1.0 vs WEB 2.0

  • WEB 1.0
    • 정적 웹
    • 단방향 통신: 사용자와 상호작용하지 않음
    • 변하지 않는 HTML 파일 제공
  • WEB 2.0
    • 동적 웹
    • 양방향 통신: 사용자와 상호작용
    • 사용자가 다양한 기능을 수행
    • 프론트엔드와 백엔드가 유기적으로 통신하며 동작

❓ 동적 웹

✔️ SSR( Server-Side Rendering )

🌱 백엔드에서 페이지 대부분의 영역을 미리 처리해서 프론트엔드로 전달하는 방식

  • 사이트의 동적인 부분들을 백엔드에서 처리
  • 클라이언트는 HTTP 응답을 받아 화면에 표시만 진행
  • 백엔드에서 HTML 파일을 모두 작성해서 프론트엔드로 전달
  • 로딩이 완료되면 페이지와 데이터가 한 번에 표시
  • 상대적으로 로드가 느려보임
  • 페이지 이동 시 마다 다시 로딩하므로 페이지가 깜빡인다

✔️ CSR( Client-Side Rendering )

🌱 프론트엔드에서 페이지의 동적인 부분 대부분을 처리하는 방식

  • 사이트의 동적인 부분들을 프론트엔드에서 처리
  • 프론트엔드가 대부분의 리소스를 가지고 페이지를 표현
  • API 통신을 이용하여 데이터만 주고 받음
  • 빠르게 페이지가 로드되지만 완전한 페이지의 내용은 API 호출이 모두 완료된 후에 보여짐

❓ Template Engine

  • 서버에서 클라이언트로 보낼 HTML의 형태를 미리 템플릿으로 저장
    • API 요청 시 미리 작성된 템플릿에 적절한 데이터를 넣어서 완성된 HTML 생성
  • 템플릿 엔진은 별도의 문법을 가지며 해당 문법으로 작성된 템플릿을 HTML으로 변환하는 기능을 제공

✔️ ejs

  • ejs 설치하기: npm install ejs
  • .ejs 확장자 사용
  • 변수 출력: <%= %>
    <h1>Hello, <%= name %>!</h1>
  • HTML 주석: <!-- 이 부분은 브라우저에 표시되지 않습니다. -->
  • JavaScript 코드 실행: <% %>
    <% if (user) { %>
      <h1>Welcome back, <%= user.name %>!</h1>
    <% } else { %>
      <h1>Please log in.</h1>
    <% } %>
  • 반복문
    <ul>
    <% for (let i = 0; i < items.length; i++) { %>
      <li><%= items[i] %></li>
    <% } %>
    </ul>
  • include: 다른 ejs 포함하기
    <%- include('header.ejs') %>

0개의 댓글