GDG WebTech - AMP, PWA
1 | <script async src="{...}"></script> | cs |
간단한 예제를 통해 접해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | <!DOCTYPE html> <html amp lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <link rel="canonical" href="AmpCard.html"/> <title>Heo Won Chul - Card</title> <script async src="https://cdn.ampproject.org/v0.js"></script> <style amp-boilerplate>body{-webkit-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-moz-animation:-amp-start 8s steps(1,end) 0s 1 normal both;-ms-animation:-amp-start 8s steps(1,end) 0s 1 normal both;animation:-amp-start 8s steps(1,end) 0s 1 normal both}@-webkit-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-moz-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-ms-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@-o-keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}@keyframes -amp-start{from{visibility:hidden}to{visibility:visible}}</style><noscript><style amp-boilerplate>body{-webkit-animation:none;-moz-animation:none;-ms-animation:none;animation:none}</style></noscript> <style amp-custom> .card { padding : 10px; } </style> </head> <body> <div class='card'> <amp-img src="https://scontent-icn1-1.xx.fbcdn.net/v/t1.0-1/p240x240/1518040_761651517286777_6537604985669832242_n.jpg?oh=b0fb88831ed414f133487f8d9ed93b35&oe=59355EED" width="240" height="240" layout="responsive"> </amp-img> <dl> <dt>Heo Won Chul</dt> <dt>heowc1992@gmail.com</dt> <dt></dt> </dl> </div> </body> </html> | cs |
PWA
- 점진적인 개선을 통해 점점 더 앱처럼 되어간다.. 조금 더 네이티브화 되어 간다.. 이런 모토(?)를 가지고 생겨난 기술인 것 같습니다.
GDG WebTech에서 PWA의 주요 기능으로 뽑는 것
1) 푸시 노티피케이션
- 스마트폰 앱처럼 브라우저에서 푸쉬 알림이 가능합니다. 현재 페이스북에서 푸시 알림을 사용하고 있습니다.
2) 서비스 워커
- 자체적인 스코프가 존재하여, 지속적인 백그라운드 처리가 가능합니다. 이는 브라우저의 설치되는 일종의 시스템 요소와 유사하다고 볼 수 있습니다. (https://jakearchibald.github.io/isserviceworkerready/)
- 주요 함수로는 cache, waitUntile, fetch가 있습니다.
※ 서비스가 되는 페이지라면 반드시 https로 사용해야 합니다.
3) 웹 인스터러블
- 웹용 매니페스트를 등록 해주면 앱에서든 데스크탑에서든 다운이 가능합니다. (안드로이드 매니페스트와 용도는 같다고 생각하시면 쉽습니다.)
manifest.json 추가 등록 후, (옵션이 여러가지 있으나.. 진행이 너무 빨라서 다는 못 들었습니다..ㅠㅠ)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | { "name": "heowc-card", "short_name": "heowc-card", "icons": [ { "src": "https://scontent-icn1-1.xx.fbcdn.net/v/t1.0-1/p240x240/1518040_761651517286777_6537604985669832242_n.jpg?oh=b0fb88831ed414f133487f8d9ed93b35&oe=59355EED", "sizes": "240x240", "type": "image/png" } ], "start_url": "./?utm_source=web_app_manifest", "display": "standalone", "orientation": "portrait", "background_color": "#FFFFFF", "theme_color": "#3F51B5" } | cs |
html 에 추가 수정 해주시면 됩니다.
1 2 3 4 5 6 7 8 9 | <!DOCTYPE html> <html amp lang="ko"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1"> <link rel="canonical" href="AmpCard.html"/> <link rel="manifest" href="manifest.json"/> ... | cs |
결과(개발자도구 - Application)
- application tab에서 보면 방금 manifest.json 에서 등록한 정보가 추가되는 것을 볼 수 있습니다. 데스트탑에서는 'add to homescreen'으로 앱을 설치 할 수 있습니다.
참고
- https://github.com/pwa-workshop/namp-card
- https://www.ampproject.org/ko/docs/get_started/create/basic_markup