styles.css:

/* styles.css */body {  font-family: Arial, sans-serif;  text-align: center;  background-color: #f0f0f0;  color: #333;}

app.js:

// app.jsif (\\'serviceWorker\\' in navigator) {  window.addEventListener(\\'load\\', () => {    navigator.serviceWorker.register(\\'/service-worker.js\\')      .then(registration => {        console.log(\\'ServiceWorker registered: \\', registration);      })      .catch(error => {        console.log(\\'ServiceWorker registration failed: \\', error);      });  });}

6. 서비스 워커 설정

서비스 워커는 브라우저가 웹페이지와 별도로 백그라운드에서 실행하는 스크립트입니다. 네트워크 요청을 가로채고 리소스를 캐시하여 성능과 오프라인 기능을 향상시킬 수 있습니다.

service-worker.js:

// service-worker.jsconst CACHE_NAME = \\'my-pwa-cache-v1\\';const urlsToCache = [  \\'/\\',  \\'/styles.css\\',  \\'/app.js\\',  \\'/manifest.json\\',  \\'/icon-192x192.png\\',  \\'/icon-512x512.png\\'];self.addEventListener(\\'install\\', event => {  event.waitUntil(    caches.open(CACHE_NAME)      .then(cache => {        return cache.addAll(urlsToCache);      })  );});self.addEventListener(\\'fetch\\', event => {  event.respondWith(    caches.match(event.request)      .then(response => {        return response || fetch(event.request);      })  );});

7. 서버 설정

server.js:

const express = require(\\'express\\');const path = require(\\'path\\');const app = express();const PORT = process.env.PORT || 3000;app.use(express.static(path.join(__dirname, \\'public\\')));app.listen(PORT, () => {  console.log(`Server is running on http://localhost:${PORT}`);});

서버 실행:

node server.js

8. PWA 테스트

  1. 앱 열기:

  2. 서비스 워커 등록:

  3. 홈 화면에 추가:

9. PWA 모범 사례

모범 사례:

10. 결론

다루어진 핵심 사항을 요약합니다.

11. 추가 자료

","image":"http://www.luping.net/uploads/20240819/172406232366c31a735dfeb.jpg","datePublished":"2024-08-19T18:12:03+08:00","dateModified":"2024-08-19T18:12:03+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}
"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > 프로그레시브 웹 앱(PWA)

프로그레시브 웹 앱(PWA)

2024-08-19에 게시됨
검색:665

Progressive Web Apps (PWAs)

프로그레시브 웹 앱(PWA) 구축

이 게시물에서는 네이티브 앱과 같은 경험을 제공하는 웹 애플리케이션 구축에 대한 현대적인 접근 방식인 프로그레시브 웹 앱(PWA)을 살펴보겠습니다. PWA의 기본 사항과 장점, PWA를 처음부터 만드는 단계를 다루겠습니다.

1. 프로그레시브 웹 앱(PWA) 소개

프로그레시브 웹 앱(PWA)이란 무엇입니까?

프로그레시브 웹 앱(Progressive Web App)은 HTML, CSS, JavaScript 등 일반적인 웹 기술을 사용하여 구축된 웹을 통해 제공되는 일종의 애플리케이션 소프트웨어입니다. PWA는 표준 호환 브라우저를 사용하는 모든 플랫폼에서 작동하도록 만들어졌습니다.

PWA의 주요 기능:

  • 반응형: 모든 기기 및 화면 크기에서 작동합니다.
  • 오프라인 기능: 서비스 워커를 사용하여 오프라인 또는 네트워크 상태가 좋지 않은 경우 기능합니다.
  • 앱과 유사한 경험: 홈 화면 설치 등의 기능을 통해 앱과 같은 사용자 경험을 제공합니다.
  • 보안: 스누핑을 방지하고 콘텐츠 무결성을 보장하기 위해 HTTPS를 통해 제공됩니다.
  • 재참여 가능: 푸시 알림을 활성화하여 사용자의 참여를 유지합니다.

2. PWA의 장점

왜 PWA를 구축해야 하나요?

  • 향상된 성능: 로딩 시간이 빨라지고 상호 작용이 원활해졌습니다.
  • 향상된 사용자 참여: 푸시 알림 및 홈 화면 액세스.
  • 개발 비용 절감: 웹과 모바일 경험 모두를 위한 단일 코드베이스.
  • SEO 이점: PWA는 검색 엔진에서 검색할 수 있습니다.

3. PWA 설정

전제 조건:

  • HTML, CSS, JavaScript에 대한 기본 지식
  • Node.js 및 npm/yarn이 설치되었습니다.

간단한 PWA 만들기:

  1. 프로젝트 설정:

    mkdir my-pwa
    cd my-pwa
    npm init -y
    npm install express
    
  2. 프로젝트 구조:

    my-pwa/
    ├── public/
    │   ├── index.html
    │   ├── styles.css
    │   └── app.js
    ├── server.js
    ├── package.json
    └── manifest.json
    

4. 매니페스트 파일 생성

manifest.json:

매니페스트 파일은 PWA에 대한 메타데이터를 제공하며 홈 화면에 앱을 설치하는 데 필요합니다.

// manifest.json
{
  "name": "My PWA",
  "short_name": "PWA",
  "start_url": "/",
  "display": "standalone",
  "background_color": "#ffffff",
  "theme_color": "#007bff",
  "icons": [
    {
      "src": "icon-192x192.png",
      "sizes": "192x192",
      "type": "image/png"
    },
    {
      "src": "icon-512x512.png",
      "sizes": "512x512",
      "type": "image/png"
    }
  ]
}

5. HTML, CSS, JavaScript 파일 생성

index.html:



  My PWA

Welcome to My Progressive Web App!

styles.css:

/* styles.css */
body {
  font-family: Arial, sans-serif;
  text-align: center;
  background-color: #f0f0f0;
  color: #333;
}

app.js:

// app.js
if ('serviceWorker' in navigator) {
  window.addEventListener('load', () => {
    navigator.serviceWorker.register('/service-worker.js')
      .then(registration => {
        console.log('ServiceWorker registered: ', registration);
      })
      .catch(error => {
        console.log('ServiceWorker registration failed: ', error);
      });
  });
}

6. 서비스 워커 설정

서비스 워커는 브라우저가 웹페이지와 별도로 백그라운드에서 실행하는 스크립트입니다. 네트워크 요청을 가로채고 리소스를 캐시하여 성능과 오프라인 기능을 향상시킬 수 있습니다.

service-worker.js:

// service-worker.js
const CACHE_NAME = 'my-pwa-cache-v1';
const urlsToCache = [
  '/',
  '/styles.css',
  '/app.js',
  '/manifest.json',
  '/icon-192x192.png',
  '/icon-512x512.png'
];

self.addEventListener('install', event => {
  event.waitUntil(
    caches.open(CACHE_NAME)
      .then(cache => {
        return cache.addAll(urlsToCache);
      })
  );
});

self.addEventListener('fetch', event => {
  event.respondWith(
    caches.match(event.request)
      .then(response => {
        return response || fetch(event.request);
      })
  );
});

7. 서버 설정

server.js:

const express = require('express');
const path = require('path');

const app = express();
const PORT = process.env.PORT || 3000;

app.use(express.static(path.join(__dirname, 'public')));

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

서버 실행:

node server.js

8. PWA 테스트

  1. 앱 열기:

    • 브라우저에서 http://localhost:3000으로 이동하세요.
  2. 서비스 워커 등록:

    • 개발자 도구를 엽니다(F12 또는 마우스 오른쪽 버튼을 클릭하고 '검사' 선택).
    • '신청' 탭으로 이동하세요.
    • '서비스 워커' 아래에 등록된 서비스 워커가 표시됩니다.
  3. 홈 화면에 추가:

    • 모바일 장치의 브라우저에서 PWA를 엽니다.
    • '홈 화면에 추가' 메시지가 표시됩니다.

9. PWA 모범 사례

모범 사례:

  • HTTPS 사용: PWA에는 보안 컨텍스트가 필요합니다.
  • 이미지 최적화: 반응형 이미지와 지연 로딩을 사용합니다.
  • 네트워크 요청 최소화: 리소스를 효과적으로 캐시합니다.
  • 오프라인 기능 보장: 의미 있는 오프라인 경험을 제공합니다.

10. 결론

다루어진 핵심 사항을 요약합니다.

  • PWA 및 그 이점을 소개합니다.
  • 매니페스트, 서비스 워커, 캐싱을 사용하여 간단한 PWA를 설정합니다.
  • 강력한 PWA 구축을 위한 모범 사례.

11. 추가 자료

  • PWA 문서
  • 고급 PWA 주제에 대한 튜토리얼 및 가이드입니다.
  • 커뮤니티 포럼 및 지원.
릴리스 선언문 이 글은 https://dev.to/suhaspalani/progressive-web-apps-pwas-3n8?1 에서 복제되었습니다. 침해 내용이 있는 경우, [email protected]으로 연락하여 삭제해 주시기 바랍니다.
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3