ãªãã©ã€ã³ãµããŒãã¯éââåžžã«äŸ¿å©ã§ãããææ°ã®PWAãäœæããããã«äžå¯æ¬ ã§ãã HTMLãããã§ã¹ããšãšãã«ãWebãµã€ããšãã€ãã£ãã¢ããªã®éã®ã®ã£ãããåããã®ã«åœ¹ç«ã¡ãŸãã
ãã®æ©èœã«ã¯2ã€ã®ç°ãªããã¬ãŒããŒããããŸãã
ãªãã©ã€ã³ãµããŒãïŒããã¯ããµã€ãããªã³ã©ã€ã³äžã«ããŒããããŠããå Žåããªãã©ã€ã³ã§ããµã€ããããã²ãŒãããæ©èœã§ãã ããã¯ãå®è£ ããã®ãæãç°¡åãªæ©èœã§ãã
ãªãã©ã€ã³ãã¡ãŒã¹ããµããŒãïŒããã¯ããµã€ãããã©ãŠã¶ã«ããŒããããŠããªãå Žåã§ãããªãã©ã€ã³ã®å Žåã§ããµã€ããéãæ©èœã§ãã
webpack-offline
ãã©ã°ã€ã³ã®ãããã§ãäž¡æ¹ãšãå®è¡å¯èœã§ããã¯ãã§ãã ãšã«ãããReactãšNext.jsã®äž¡æ¹ãäžåºŠã«åŠãã§ããã®ã§ããŸã ãããæ©èœãããããšãã§ããŠããŸããã
ãããæ©èœãããããã®ã¹ãããïŒ
webpack-offline
ãã€ã³ã¹ããŒã«ããŸãnpm install offline-plugin --save-dev
next.config.js
ãäœæããŸãconst OfflinePlugin = require('offline-plugin');
module.exports = {
webpack: (config, { dev }) => {
config.plugins = [
new OfflinePlugin()
];
return config
}
};
ããã¯ç§ãåé¡ãæ±ããŠããã¹ãããã§ãã ãããã¬ãã«å
ã®componentDidMount
å
ã®ã³ã³ããŒãã³ãã§ãããè¡ãã¹ãã ãšæããŸãã
ãã®åé¡ã¯ãç§ãããã«åãçµã¿ç¶ããããšãæãåºããããã®ã§ãããšåæã«ãããç¥èã®ãã人ããã®å©ããæ±ãããã®ã§ããããŸãã
説æ/ããã¥ã¡ã³ã/äŸãšãšãã«ããããæ©èœããããšã絶察ã«æãã§ããŸãã
next / prefetchã¯ããŒã¿ãããªãã§ããããªãããããªãã©ã€ã³åäœããŸã å®éã«ã¯èš±å¯ããŠããªãããšã«æ³šæããŠãã ããïŒ //github.com/zeit/next.js/issues/740
Next.jsãšã¯çŽæ¥é¢ä¿ãããŸããããå®éã«ã©ãã ãã®ããŒã¿ããªãã©ã€ã³ã«ä¿ã€ããšãã§ããã®ãïŒããšãã°ãWebã¢ããªã«ãããªãªã©ãããå Žå-ãã©ãŠã¶ãŒã«å³ããå¶éããããŸããïŒã¢ãã€ã«ã«ã€ããŠã¯ã©ãã§ããïŒïŒããŠãŒã¶ãŒã¯å ·äœçã«ã©ã®ããã«ã§ããŸããïŒåŸã§äœ¿çšããããã«äºåã«ããŠã³ããŒããããã®ã1ã€èŠæ±ããŸããhttpsïŒ
ãã©ãããã©ãŒã ããã©ãŠã¶ãããŒãžã§ã³ã«ãã£ãŠããŒã¿å¶éã¯ç°ãªããŸãã ããã©ãŠã¶ã¹ãã¬ãŒãžã®æªçšè ãã§å¶éããã¹ãã§ããŸãïŒ //demo.agektmr.com/storage/
ãªãã©ã€ã³ã¹ãã¬ãŒãžãšãã£ãã·ã¥ãç®çãšããæšæºåãããæ¹æ³ã¯IndexedDBã§ãã iOS SafariïŒv10ïŒã§ããµããŒããããããã«ãªããŸããããããã©ãŒãã³ã¹ã®åé¡ããããŸãã ãã以å€ã®å Žåã¯ãçŸåšå¹ åºããµããŒãããããŸãïŒ http ïŒ//caniuse.com/#feat = indexeddb
ããšãã°ãPouchDBã¯Safariã§IndexedDBã®ä»£ããã«WebSQLã䜿çšããŸãã https://github.com/pouchdb/pouchdb/issues/5572
localForageãšåãïŒ https ïŒ
PouchDBã«ã¯ãããŒã¿å¶éã®åªããèŠçŽããããŸãïŒ https ïŒ//pouchdb.com/faq.html#data_limitsïŒå°ãå€ããªã£ãŠããŸãïŒ
ãŸãããã®ããã«å€ãèšäºã§ã¯ãã¢ãã€ã«ãã©ãŠã¶ã«é¢ããã¹ãã¬ãŒãžäžè¶³ãšã©ãŒããã®ä»ã®åŽé¢ãåŠçããæ¹æ³ã«ã€ããŠã説æããŠããŸãhttps://www.html5rocks.com/en/tutorials/offline/quota-research/
äžéšã®ãã©ãŠã¶ã§ã¯ãçŸåšã®å²ãåœãŠãã¯ãšãªããŠãããæ°žç¶çãªã¹ãã¬ãŒãžããªã¯ãšã¹ãããããšãã§ããŸãïŒ https ïŒ//jakearchibald.com/2014/offline-cookbook/#cache -persistence
ãã1ã€ã®æ¹æ³ã¯ãé·ããã£ãã·ã¥æå¹æéå€ãšäžå€ã®ãã£ãã·ã¥å¶åŸ¡ãServiceWorkerãšäžç·ã«äœ¿çšããããšã§ãã ããã«ãããéžæãããªãœãŒã¹ããšã«httpãªã¯ãšã¹ããè¡ãã ãã§ããŠãŒã¶ãŒæå®ã®ãã£ãã·ã¥ãç°¡åã«å¯èœã«ãªããŸãã ããã¯ãå€ããã©ãŠã¶ã§ãéåžžã«ããŸãæ©èœããŸãã ãã ããå¶éãåé¿ããããã«ããŸããŸãªãã£ãã·ã¥ãç¶æããã³æåã§åé€ã§ããããã«ããããšã¯ãServiceWorkerããµããŒããããã©ãŠã¶ãŒã§ã®ã¿å¯èœã§ãã
https://developer.mozilla.org/en-US/docs/Web/API/Cache
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API/Using_Service_Workers
ã¹ããŒã¹ãäžè¶³ãããšããã©ãŠã¶ã¯å¶éå
ã«ãªããŸã§äžåºŠã«ãªãªãžã³å
šäœãåé€ã§ããããšãèŠããŠãããŠãã ããã
https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Browser_storage_limits_and_eviction_criteria
Addy Osmaniã«ããå¥ã®æçšãªèšäºïŒ https ïŒ
ã©ããããäœæ¥äžã®ã¹ãã¬ãŒãžAPIããããŸãïŒ //storage.spec.whatwg.org/
ããã«ãããå®éã«æ°žç¶çãªã¹ãã¬ãŒãžãå¯èœã«ãªããŸãã
ãåŸæ¥ããŠãŒã¶ãŒãããã€ã¹ã®ã¹ãã¬ãŒãžã¹ããŒã¹ã䜿ãæãããšããããã®APIã§ä¿åãããããŒã¿ã¯ããŠãŒã¶ãŒãä»å
¥ã§ããã«å€±ãããŸãããã ããæ°žç¶çãªããã¯ã¹ã¯ããŠãŒã¶ãŒã®åæãªãã«ã¯ãªã¢ããããšã¯ã§ããŸãããããã«ããããŠãŒã¶ãŒã¯ããŒã¿ãä¿èšŒã§ããŸãããŠã§ããžã®ãã€ãã£ããã©ãããã©ãŒã ã§æ¥œããã§ããŸãããã
IMOããµã€ã/ã¢ããªããªãã©ã€ã³ã§æ©èœãããã«ã¯ããã¬ãŒã ã¯ãŒã¯ãåç¬ã§è¡ãã¹ãã§ã¯ãªãå€ãã®æ±ºå®ãå«ãŸããŸãã Service Workerã䜿çšããŠãªãã©ã€ã³ã§åäœãããµã€ãã®äŸãåãäžããŸãããã¢ããªã®çš®é¡ããšã«ç°ãªãææ³ããããŸãã
@impronunciableã«æè¬ã
ããªãã¯ã©ã®ãããªæ±ºå®ã«ã€ããŠè©±ããŠããã®ã§ããïŒ åé¡ã2ã€ã®äž»èŠãªåé¡ã«åããããšãã§ãããšæããŸãã
1ïŒéçã¢ã»ããã®ãã£ãã·ã¥ïŒjsãHTMLãç»åãªã©ã®ããã«...ããã¯ãå°ãªããšããªãã©ã€ã³ãã¬ãŒããŒã§/static
é€ããŠãã»ãŒãã§ã«å®è£
ãããŠãããreactã䜿çšããŠããããšãèãããšã webpackãä»ãã1ã€ã®å¥œãŸããå®è£
-ãªãã©ã€ã³ããã³ãµãŒãã¹ã¯ãŒã«ãŒã
2ïŒããŒã¿ãã£ãã·ã³ã°ïŒç¶æ ãã¯ãšãªãæ®çºæ§ããŒã¿ã....å°ãªããšããŠãŒã¶ãŒãããŒã¿ãããŒãããæ¹æ³ãæšæž¬ããå¿ èŠããããããããå€ãã®æžå¿µãçããŸãã ãã¶ããreduxã§ç¶æ ãä¿æããæ¹æ³ã瀺ãããšãã§ããã°ã人ã ã¯å¥œããªããã«ããŒã¿ãreduxã«å ¥ããã§ãããã ãããã¯ãã¯ãšãªãšãã¥ãŒããŒã·ã§ã³ããã£ãã·ã¥ããããšã§ãã®ãããªã±ãŒã¹ãã«ããŒããå¿ èŠãããGraphQL / Apolloã䜿çšããããšãã§ããŸãã
@servermetaããã¯æ¬åœã«ããªãã®ã±ãŒã¹ã«äŸåããŸãã ãã©ã°ã€ã³ã䜿çšããã«ãã«ã¹ã¿ã ãµãŒããŒãšhttps://serviceworke.rs/ã®æŠç¥ã ãã䜿çšããŠãç©æ¥µçãªãã£ãã·ã¥æŠç¥ã®å®è£ ãå®äºããŠã
ç§ã¯ãããããã§æ©èœãããŠã
ããããšã@ooade ããããã£ããããªãã¯ç§ã«å€ãã®æéãç¯çŽããã
ãšã«ãããæŽæ°ãšãªããŒãã®éãç¶æ ãæç¶ããªãããšãããããŸãã ãã®æ©èœãè¿œå ããæ¹æ³ãèããŠã¿ãŸãã
@ooadeã«æè¬ã
åé¡ãåå²ããå¿ èŠããããšæããŸãããªãã©ã€ã³ããŒã¿ã®ååŸã¯éçºè ã«ä»»ããã¹ãã§ãããreduxã®ç¶æ ã¯ç¶æã§ããŸãã ããããã§ãã¯ããŠïŒ
https://github.com/rt2zz/redux-persist
ããã«ãããç¶æ ãlocalstorageã«ä¿åã§ãããããæŽæ°ãåèªã¿èŸŒã¿ãã¿ããã»ãã·ã§ã³ã®éã§ç¶æ ãç¶æã§ããŸãã
ã¿ãªãããããã«ã¡ã¯ã Googleã®ç§ã®ããŒã ã¯ãReact / Webpackã§äœ¿çšãããhttps://github.com/GoogleChrome/sw-precacheãhttps://github.com/GoogleChrome/sw-toolboxãªã©ã®ããã€ãã®ServiceWorkerã©ã€ãã©ãªïŒWebpackãã©ã°ã€ã³ã䜿çšïŒã«åãçµãã§ããŸãã LyftãHousing.comãFlipkartãªã©ã®ãµã€ãã
Nextããªãã©ã€ã³ãµããŒããæ€èšããããšã決å®ããå Žåãããã€ãã®ãã€ã³ããå ±æãããŠããã ããŸãã ã³ãŒãåââå²ããã§ã«è¡ãããŠããããšãèãããšã PRPLã®ãããªãã¿ãŒã³ã
ãããã®ããŒãžã®å³æãªããŒãããŒããæäŸããããšã«å ããŠãV8ã®ã³ãŒããã£ãã·ã³ã°ãæ©æã«éžæã§ããããããªããŒãã¢ã¯ã»ã¹ã®è§£æ/ã³ã³ãã€ã«æéãçŸåšãããçããªããŸãã
ããã®ã©ãããé¢çœã@rauchgãªãã
@addyosmaniãªãã©ã€ã³ãµããŒãã¯ã2.0以éã®å®å®ããæåªå äºé ã®1ã€ã§ãã
@rauchg 2.0ã®å®å®ãªãªãŒã¹æ¥ã«é¢ããèŠç©ããã¯ãããŸããïŒ
ç§ãã¡ã¯æ¬çªç°å¢ãå®å
šã«éå§ããããšããŠããŸããNext.jsã䜿çšããããšæããŸãã
æ¥/é±/æãªã©ãããããçš®é¡ã®èŠç©ããã«æè¬ããŸã...
ã©ããããããšãïŒ
@ Ajar-Ajar2.0.0ãæ¬æ¥ãªãªãŒã¹ãããŸããã
@rauchgã¯ãªãã©ã€ã³ãã¡ãŒã¹ãã®ãµããŒããããã§è¿œè·¡ãããäºå®ã§ããããããšãå¥ã®åé¡ãäœæããäºå®ã§ããïŒ
@jevakallioã«ããæ°ãããªãŒãã³ãœãŒã¹ã®redux-offlineãã芧ãã ããã 次ã®+ redux-offlineã®äŸããããšçŽ æŽãããã§ãããã
ãããå®çŸããæ¹æ³ã«ã€ããŠã®æ å ±ã¯ãããŸããïŒnext.config.jsãå®è¡ããŠãªãã©ã€ã³ãã©ã°ã€ã³ãã€ã³ã¹ããŒã«ããããšããŸããããæ©èœãããããšãã§ããŸããã§ããã 次ã¯çŽ æŽããããããžã§ã¯ãã§ããããã®æ©èœïŒãªãã©ã€ã³ãã¡ãŒã¹ãïŒãããã«äœ¿çšã§ããã°ãéåžžã«å®å šïŒãããŠã¯ãŒã«ïŒã«ãªããŸãïŒ
@ saulflores95 @ ooadeã®NextSimpleStarterã®æ¹æ³ã䜿çšãããšããŸããããŸãã:)
@AugustinLFNextSimpleStarterã¯ãªãã©ã€ã³æ©èœãæäŸããŠããŸããã https://github.com/ooade/NextSimpleStarter/issues/23#issuecomment -294310240
@seduboisãããèªãã§æ¥ã人ã«ãšã£ãŠãããã¯å°ãèªåŒµã§ãã å ¬å¹³ãæãããã«ãsw-precacheãšsw-toolboxã䜿çšãããªãã©ã€ã³æ©èœãããã€ããããŸãã ç§ã®ã¢ããªã¯ããã2ã€ã®ããŒã«ã ãã§ãªãã©ã€ã³ã§åäœããŸãããã¢ããªã®åæç¶æ ã¯å€ãããŸããã å ·äœçã«èšããšãæåã«éä¿¡ããããã®ãè¶ ããŠç¶æ ãæ§ç¯ããããã®ãªãã©ã€ã³ãœãªã¥ãŒã·ã§ã³ã¯æäŸãããŠããªããšèšããŸãã
@ timmywil ãnextjsãªãã©ã€ã³å¯Ÿå¿ã¢ããªã®GitHubãªããžããªã¯ãããŸããïŒ ããããšãã
Safariã«å¿
èŠãªappcache
ã䜿çšããŠããªãã©ã€ã³ããµããŒããã次ã®ïŒããŒã¿ïŒããŒãžã§ã³ãäœæããŸããã http://github.com/ssured/nownextmicroãã芧
ããããã€ã©ãŒãã¬ãŒãã«ãªãã©ã€ã³ãµããŒããè¿œå ããŸããã
https://github.com/Sly777/ran
å°ããã°ããããŸãã ã ããããããå®éšçããšåä»ããããçç±ã§ãðãšã«ãããããã圹ç«ã€ããšãé¡ã£ãŠããŸãã
@rauchgãã®æ©èœã¯ãŸã åªå äºé ã§ããïŒ
@rauchg next.js 4.0ããŒã¿çããªãªãŒã¹ãããŸãããããªãã©ã€ã³ã®æåã®ãµããŒãããã®ããŒãžã§ã³ã®ããŒããããã«å«ãŸããå¯èœæ§ã¯ãããŸããïŒ
æ©èœã®ãã¥ãŒã¹ããé¡ãããŸã^^
Next.js 5.0ããªãªãŒã¹ãããŸããïŒããã§ãšãããããŸãïŒïŒãããªãã©ã€ã³ãµããŒãã«ã€ããŠã®èšåã¯ãããŸãããå ±æãããæ°ããããŒããããã¯ãããŸããïŒ ãããŸã§ã«è¡ãããçŽ æŽãããä»äºã«æè¬ããŸã
@idhardå®éã«ã¯ãããã©ã«ãã§ã¯ãªãã©ã€ã³ãµããŒãããµããŒãããªãå¯èœæ§ããããŸãã
ïŒããããç¶æ³ã¯å€ãããããããŸããïŒ
ããããNext.jsãéæ³ã䜿ããªãããã«ããéçšã«ãããŸãã ãã®ãããçŽæ¥webpackãã©ã°ã€ã³ãšããŒããŒããã®ãŸãŸäœ¿çšã§ããŸãã
次ã®5ã€ã¯ã¹ããã1ã§ãã
@idhardå æ¬çãªãªãã©ã€ã³ãµããŒãã«ã€ããŠã¯çŽæã«åãããšæããŸããäžéšã®ã¢ããªã§ã¯ããã®æ©èœãæå¹ã«ããããªãããšã¯ééããããŸããã
ç§ã®å人çãªãŠã§ããµã€ãã§ã¯ããã®https://github.com/zeit/next.js/tree/canary/examples/with-sw-precacheã䜿çšããŠããŸãããŸããiOSã®Eazeã§ã®æ¬çª
@hanfordããåæ§ã®è°è«ãCRAã§è¡ãããããã©ã«ãã§Webworkerã®ãµããŒããåé€ãããããšã«ãªããŸãïŒhttps://github.com/facebook/create-react-app/issues/2554#event-1431558318ïŒããããç§ã¯ãŸã Webworkersã ãšæããŸããšPWAã¯ãªãã©ã€ã³ãµããŒãã®äºå®äžã®ãœãªã¥ãŒã·ã§ã³ã«ãªãã®ã§ãNextã®ããŒã ãäºåã«ãã§ãããããããŒãžãªã©ã®å ¬åŒãµããŒããè¿œå ããèšç»ããããã©ãããç¥ã£ãŠãããšããã§ãããã
@idhardãããã³ã¢ããŒã ã«ãšã£ãŠèå³æ·±ããžã¬ã³ãã®ãããªãã®ã§ãã ç§ã¯äžèšã®sw-precacheãã©ã°ã€ã³ã«æ¬åœã«æºè¶³ããŠããŸãã
ç§ã®å人çãªãŠã§ããµã€ãã¯ãéçãã£ã¬ã¯ããªããmanifest.json
ãæäŸãããšãšãã«ãsw-precachewebpackãã©ã°ã€ã³ã䜿çšããŠããŸãã èå³ãããã°ãã³ãŒãã¯ããã«ãããŸã..ã³ãããã¯å°ããããã§ãããå
é±äžã«ãªãã©ã€ã³ãµããŒããšãããã§ã¹ãjsonãè¿œå ããŸããã
@hanford iOS 11.3ã§äœãèµ·ãããŸããããµãŒãã¹ã¯ãŒã«ãŒãããŸããïŒ è©³çŽ°ã«ã€ããŠã®åèè³æã¯ãããŸããïŒ
@hanford @idhard CRAã®ãã£ãšåã«ãµãŒãã¹ã¯ãŒã«ãŒãè©ŠããŸããããå€ãã®åé¡ããããŸããã
ãã®ãããåŸæ¥ã®Webãã£ãã·ã³ã°æè¡ã®ã¿ã䜿çšããŠããªãã§ãããœãªã¥ãŒã·ã§ã³ãæ§ç¯ããããšã«ããŸããã
ããã¯é©ãã»ã©ããŸãæ©èœããŸãã æ°ããäžé£ã®æ¹åãéããªãéå§ãããŸãã
ã¯ãããã¡ãããªãã©ã€ã³ã¯SWãå¿
èŠãªå Žæã§ãã
ããããããã¯éåžžã«äžå®å®ã§ãAPIã䜿çšããã®ã¯é£ããã§ãã ç©äºãããŸããããããµã€ããå£ããå¯èœæ§ããããŸãã
ã§ããããç§ãã¡ã¯èªåãã¡ã§ãããããããªããããããŸããã
ãã ãããŠãŒã¶ãŒãNext.jsãã©ã°ã€ã³ãä»ããŠsw-precache
ãªã©ã䜿çšã§ããããã«ãããïŒãŸãã¯åã«WebpackããŒããŒãšãã©ã°ã€ã³ã®ã»ãããè¿œå ããïŒ
@sedubioisã¯ãiOS Safariã§ã®Appleã®èšç»ã«ã€ããŠã httpsïŒ //developer.apple.com/library/content/releasenotes/General/WhatsNewInSafari/Articles/Safari_11_1.htmlãåç §ããŠãã ããã ãµãŒãã¹ã¯ãŒã«ãŒãçºè¡šãããŸãã
ãã@ ssured @ seduboisãµãŒãã¹ã¯ãŒã«ãŒã¯
@arunodaã瀺åããŠããã®ã¯ã Next.js
çŸåšã®ãã£ãã·ã¥æŠç¥ïŒãã£ãã·ã¥å¶åŸ¡ããããŒãetagãªã©ïŒã¯ãµãŒãã¹ã¯ãŒã«ãŒãããã¯ããã«å®å®ããŠãããšããããšã§ãã ãµãŒãã¹ã¯ãŒã«ãŒã¯ãç¹ã«ãããã¯ãŒã¯ãªã¯ãšã¹ãããã现ããå¶åŸ¡ããïŒãã£ãã·ã¥ãããã³ã³ãã³ããæ©æã«è¿ãïŒãªã©ãããã€ãã®éåžžã«åªããæ°æ©èœãæå¹ã«ããŸããããããNext.jsãã©ãã§ãæ©èœãããªãŒããŒãããã倧å¹
ã«å°ãªããªããŸãã
@ssured @seduboiså æ¥ZeitããªãªãŒã¹ãããã©ã°ã€ã³ãšåãããã«æ©èœããå°ããªãã©ã°ã€ã³ãäœæããŸããããªãã©ã€ã³ã®æ¬¡ã®ã¢ããªã軜æžããæ¢åã®ã¢ããªã«ç°¡åã«ãã©ã°ã€ã³ã§ããã¯ãã§ãã
ãã£ãŒãããã¯ããããŸããããç¥ãããã ããã https://github.com/hanford/next-offline
@hanfordç§ãã¡ã®ç掻ãå°ã楜ã«ããŠãããŠããããšã
@arunoda next.js 5ã§ã®ãã©ã°ã€ã³ã®ãµããŒãã¯çŽ æŽãããã§ããããã¹ãŠã®ãã©ã°ã€ã³ãè£å©ã§ã¯ãªãããã¹ãŠã®äŸãšåãããã«ã¡ã€ã³ã®next.jsãªããžããªãã©ã°ã€ã³ãã©ã«ããŒã§ãã¹ããããŠãããšãã³ãã¥ããã£ã«ãšã£ãŠã¯ããã«æçã§ã¯ãªãã§ãããããã¬ãïŒ ã»ãšãã©ã®éçºè
ã¯ã¡ã€ã³ãªããžããªã«ã¢ã¯ã»ã¹ãããããæœåšçãªãã©ã°ã€ã³éçºè
ã¯ãã«ãªã¯ãšã¹ããäœæããã€ã³ã»ã³ãã£ããã¯ããã«é«ããªããåå¥ã®ãªããžããªã®çµæãšããŠçºçããç¹°ãè¿ããšé¿ããããªããã©ã°ã€ã³ãšã³ã·ã¹ãã ã®æçåã«ããã³ãã¥ããã£ã®æéã®æµªè²»ãç¯çŽã§ããŸãã
å ã«é²ãããã«äœããã¹ããããŸã 決å®ããŠããä»ã®äººã®ããã«ãç§ã¯æ¯èŒçç°¡åã«sw-precache webpackãã©ã°ã€ã³ãå©çšããŸããïŒäŸãåã³ïŒã
ç§ã¯èªåã®ãœãªã¥ãŒã·ã§ã³ã䜿çšããŠããŸãããããã³ãã©ãŒããæäŸãããœãªã¥ãŒã·ã§ã³ã«åãæ¿ããŸããã ãã©ã°ã€ã³ãServiceWorkerãèªåç»é²ããã®ãåæ¢ããããã«ãnext.config.jsã«ããã€ãã®å€æŽãå ããå¿ èŠããããŸããããæ£åžžã«æ©èœããŠããããã§ãã
ãããã«ã¹ã¿ã ãµãŒããŒã§æ©èœãããæ¹æ³ãç解ããå¿ èŠããããŸãã ããšãã°ãarticle /ïŒslugãšããŠã«ãŒããèšå®ããŠããŸãã ãããã®URLã®ããããã«ã¢ã¯ã»ã¹ãããšããµãŒãã¹ã¯ãŒã«ãŒã¯ãã®URLã®ããã¥ã¡ã³ãããã£ã¹ãããããããšããŠããŸãã 誰ããç§ããããæ¢ããŠä»£ããã«èšäºãæäŸãããæ¹æ³ãç¥ã£ãŠããŸããïŒ ããã¯ãã¯ãŒã¯ããã¯ã¹ã®èšå®ã«é¢é£ããŠãããšæããŸãã
ä»åŸã®NextJSãªãªãŒã¹ã§ã¯ããµãŒãã¹ã¯ãŒã«ãŒã®çµ±åããªãã©ã€ã³ãµããŒããåŒãç¶ãæåŸ ããå¿ èŠããããŸããïŒ ä»¥åã¯åªå æ©èœã ãšèšã£ãŠããæ¹ãããã£ããããšæããŸããããã®åé¡ã¯1幎å以äžç¶ããŠããŸã...
@ caribou-code Next.jsã®èšç»ã«ã€ããŠZeitããŒã ã«ã€ããŠè©±ãããšã¯ã§ããŸããããå°ãåã«ãããæžããŸããïŒ https ïŒ
ç§ã¯ããã€ãã®ã¢ããªã±ãŒã·ã§ã³ã§ããã䜿çšããŸããããããŠããã¯ããªãããŸããããŸããã å éšçã«ã¯ãéåžžã«ãšããµã€ãã£ã³ã°ãªãããžã§ã¯ãã§ããgooglesã¯ãŒã¯ããã¯ã¹ãå©çšããŠããŸãïŒ
next-offline
ã䜿çšããããã€ãã®äŸïŒ
@hanfordããã«æçš¿ããåã«next-offlineã䜿çšããŠããŸããããããªãè¯ãã§ãïŒ å®éããããŸã§ã«å®è£ ã§ããå¯äžã®ãœãªã¥ãŒã·ã§ã³ã§ãããå®éã«æ©èœããŸãã ããã§ããŸããïŒ
ãã ããNextJSãªããžããªã«ãã®äŸãããããã sw-precache-webpack-pluginã§åäœãããœãªã¥ãŒã·ã§ã³ãååŸã
ãã®åé¡ã解決ããããã«ã1幎åã«NextSimpleStarterãäœæã
ãã ããçŸåšã®æšæºïŒã¢ã€ã³ã³ãµã€ãºãªã©ïŒã«ã¯ãŸã æŽæ°ããŠããããæ°æ¥ã§ä¿®æ£ããäºå®ã§ãã ãæ°è»œã«ãè©Šããã ããã æºè¶³ã®ãããã®ãèŠã€ãããªãå Žåã¯ãåé¡ãåé€ããŠãã ããã
@hanfordããã¯ããããã ã éçºã¢ãŒãã§å®è¡ãããŸããããã®ã¢ãŒãã§ã¯ServiceWorkerããããŸããã ããªãã®readmeãããæ¬çªã¢ãŒãã§ãService Workerã䜿çšããããŒããµãŒããŒã䜿çšããã«åäœãããæ¹æ³ãç¥ãããšã¯ã§ããŸããã ãŸããã¢ããªãNetlifyã«ãããã€ãã next export
ãŸãã ç§ã®ã¢ããªã¯å®å
šã«éçã§ãã ãããåé¡ã§ããã°ã next export
ã䜿çšããªããŠãåé¡ãããŸããã ç§ã¯æãããã©ãŒãã³ã¹ã®é«ããã®ãäœã§ãããŸãããè²»çšã¯ããããŸããã 趣å³ã®ã¢ããªãªã®ã§æè»ã§ãã
@ooadeãããèŠæ ããããŸãããèµ·å
A bad HTTP response code (404) was received when fetching the script.
@dancancroããªãã¯ééããªã䜿çšããããšãã§ããã¯ãnext-offline
ãå©çšããªããã next-export
next-offline
ã§åé¡ãéããŠãåçŸããããã®ããã€ãã®æé ãå®è¡ããŠã詳现ã確èªã§ããããã«ããŠãã ããã
@hanfordå¿
èŠã«æ瀺ã§ãã å¯äžã®åé¡ã¯ãæ¬çªã¢ãŒãã§å®è¡ããæ¹æ³ãããããªãããšã§ãã ãã®ç¶æ
ããå€æãããšããµãŒãã¹ã¯ãŒã«ãŒã¯éçºã¢ãŒãã§ç»é²ãããŠããªãã¯ããªã®ã§ãç§ã«èµ·ãã£ãããšã¯äºæ³ãããåäœã§ãã ããã€ãã®æ瀺ãå¿
èŠã§ã-æ¬çªã¢ãŒãã§å®è¡ããæ¹æ³ããããŠnext export
ãå¯èœãªå Žåã¯ã next export
䜿çšããŠæ¬çªã¢ãŒãã§éçãªãµãŒããŒã¬ã³ããªã³ã°ã³ãŒããå®è¡ããæ¹æ³ã
@dancancroç§ã¯ç解ããŠããŸããããã®è°è«ã¯ããã§è¡ãããã¹ãã§ã¯ãããŸãããããã¯ç¢ºãã«Next.jsèªäœã®åé¡ã§ã¯ãããŸããã
ãã¡ãã§åé¡ãéããŠãã ããããäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ããã
é¢ä¿ã®ãªãåé¡/ã¬ãã§è°è«ããå Žåãã³ãã¥ããã£ã¯å©çãåŸãŸãã
ç§ã¯æè¿ãNext.jsçšã®äœ¿ãããããŒãæ§æPWAãã©ã°ã€ã³ãäœæããŸããïŒ next-pwa
æãåèã«ãªãã³ã¡ã³ã
ã¿ãªãããããã«ã¡ã¯ã Googleã®ç§ã®ããŒã ã¯ãReact / Webpackã§äœ¿çšãããhttps://github.com/GoogleChrome/sw-precacheãhttps://github.com/GoogleChrome/sw-toolboxãªã©ã®ããã€ãã®ServiceWorkerã©ã€ãã©ãªïŒWebpackãã©ã°ã€ã³ã䜿çšïŒã«åãçµãã§ããŸãã LyftãHousing.comãFlipkartãªã©ã®ãµã€ãã
Nextããªãã©ã€ã³ãµããŒããæ€èšããããšã決å®ããå Žåãããã€ãã®ãã€ã³ããå ±æãããŠããã ããŸãã ã³ãŒãåââå²ããã§ã«è¡ãããŠããããšãèãããšã PRPLã®ãããªãã¿ãŒã³ã
ãããã®ããŒãžã®å³æãªããŒãããŒããæäŸããããšã«å ããŠãV8ã®ã³ãŒããã£ãã·ã³ã°ãæ©æã«éžæã§ããããããªããŒãã¢ã¯ã»ã¹ã®è§£æ/ã³ã³ãã€ã«æéãçŸåšãããçããªããŸãã
ããã®ã©ãããé¢çœã@rauchgãªãã