[javascript] Parcel에서 로딩 스피너를 추가하는 방법은?

로딩 스피너를 추가하는 방법은 다음과 같습니다:

  1. 우선, 로딩 스피너를 표시할 HTML 파일을 엽니다.
  2. <body> 태그 안에 로딩 스피너를 위한 요소를 추가합니다. 예를 들어, <div> 태그로 감싸진 스피너를 생성할 수 있습니다: ```html
3. CSS를 사용하여 로딩 스피너를 디자인합니다. 간단한 예시로, 다음과 같은 스타일을 추가해보겠습니다:
```css
#loader {
  border: 16px solid #f3f3f3;
  border-top: 16px solid #3498db;
  border-radius: 50%;
  width: 120px;
  height: 120px;
  animation: spin 2s linear infinite;
}

@keyframes spin {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
  1. 자바스크립트를 사용하여 로딩 스피너를 제어하는 코드를 추가합니다. Parcel은 parcel-plugin-inject 플러그인을 사용하여 자바스크립트를 번들에 주입할 수 있습니다. 다음은 번들에 주입될 코드입니다:
    document.addEventListener("DOMContentLoaded", function() {
      var loader = document.getElementById("loader");
      loader.style.display = "none";
    });
    

    이 코드는 페이지가 로드되면 loader 요소의 디스플레이 속성을 “none”으로 설정하여 로딩 스피너를 숨깁니다.

  2. 위의 코드를 parcel-plugin-inject 플러그인을 사용하여 Parcel에 주입합니다. package.json 파일을 수정하여 플러그인을 설치하고 설정할 수 있습니다. 다음은 package.json 파일의 예시입니다:
    {
      "name": "my-parcel-app",
      "version": "1.0.0",
      "scripts": {
     "start": "parcel index.html"
      },
      "devDependencies": {
     "parcel-plugin-inject": "^2.0.0"
      },
      "parcel-plugin-inject": {
     "injector": "./injector.js"
      }
    }
    

    위의 예시에서 "injector" 키의 값을 "./injector.js"로 설정하여 injector.js 파일에 위의 자바스크립트 코드를 작성해야 한다는 것을 나타냅니다.

  3. 프로젝트의 루트 디렉토리에 injector.js 파일을 생성하고, 다음과 같은 내용을 추가합니다:
    module.exports = function() {
      return {
     appTransform: {
       "index.html": {
         match: "</body>",
         prepend:
           '<script src="./loader.js"></script><script src="./inject.js"></script>',
       },
     },
      };
    };
    

    위의 코드는 loader.jsinject.js라는 자바스크립트 파일을 번들에 주입합니다. loader.js 파일에는 앞서 작성한 로딩 스피너에 대한 CSS 코드를 포함해야 합니다. inject.js 파일에는 앞서 작성한 자바스크립트 코드가 있어야 합니다.

  4. loader.js 파일을 생성하고, 로딩 스피너에 대한 CSS 코드를 추가합니다.

  5. inject.js 파일을 생성하고, 앞서 작성한 자바스크립트 코드를 추가합니다.

  6. npm start 명령어를 실행하여 앱을 실행합니다. 이후 브라우저에서 앱을 로드할 때 로딩 스피너가 표시됩니다.

위의 단계를 따르면 Parcel 앱에 로딩 스피너를 추가할 수 있습니다. 로딩 스피너는 앱이 로드되는 동안 사용자에게 진행 상황을 시각적으로 전달하는 데 도움이 됩니다.

참고 자료: