- 자바스크립트 Turbolinks를 이용한 테마 변경 기능 구현하기

서론

웹 애플리케이션에서 테마 변경 기능은 사용자에게 맞춤형 경험을 제공하는 데 도움이 됩니다. 이번에는 자바스크립트 라이브러리인 Turbolinks를 사용하여 테마 변경 기능을 구현하는 방법에 대해 알아보겠습니다.

Turbolinks는 웹 페이지의 페이지 로딩 시간을 줄이기 위해 사용되는 자바스크립트 라이브러리입니다. 이 라이브러리는 페이지의 변화를 자동으로 감지하고 AJAX를 사용하여 페이지 일부분만 업데이트하는 기능을 제공합니다. 이를 통해 페이지 전체를 다시 로드하는 것보다 빠른 페이지 전환을 가능하게 합니다.

테마 변경 기능 구현하기

  1. 먼저, 테마에 대한 스타일 시트를 작성합니다. 각 테마에 대한 스타일 시트는 다른 CSS 클래스를 가지고 있어야 합니다.

  2. HTML의 테마 변경 버튼에 클릭 이벤트 리스너를 추가합니다.

    document.getElementById('theme-button').addEventListener('click', function() {
      // 테마 변경 로직 작성
    });
    
  3. 테마 변경 로직을 작성합니다. Turbolinks를 사용하기 위해 테마 변경을 특정 URL 경로로 이동하는 방식으로 구현합니다.

    document.getElementById('theme-button').addEventListener('click', function() {
      var currentTheme = document.body.classList.contains('theme-dark') ? 'dark' : 'light';
      var newTheme = currentTheme === 'dark' ? 'light' : 'dark';
      var url = '/themes/' + newTheme;
    
      Turbolinks.visit(url); // Turbolinks를 통해 새로운 테마로 이동
    });
    
  4. 서버 측에서는 테마에 대한 요청을 처리하는 라우트와 컨트롤러를 작성합니다.

    # routes.rb
    get '/themes/:theme', to: 'themes#change_theme'
    
    # themes_controller.rb
    def change_theme
      current_user.update(theme: params[:theme])
      redirect_back(fallback_location: root_path)
    end
    
  5. 테마 변경이 완료되면 Turbolinks를 사용하여 화면을 새로 고침합니다.

    Turbolinks.clearCache(); // Turbolinks 캐시를 비움
    Turbolinks.visit(window.location.href); // 현재 URL로 다시 이동하여 화면 새로 고침
    

마치며

이번 글에서는 자바스크립트 Turbolinks를 이용하여 테마 변경 기능을 구현하는 방법을 알아보았습니다. Turbolinks를 사용하면 페이지 전체를 다시 로드하는 대신 일부분만 업데이트하여 빠른 페이지 전환을 가능하게 할 수 있습니다. 테마 변경 기능을 통해 사용자에게 맞춤형 경험을 제공할 수 있으니 적용해 보세요.

#webdevelopment #javascript