View in Telegram
πŸš€ Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-совмСстимым Π₯ΠΎΡ‚ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ вашС React-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π»ΠΎ Π΄Π°ΠΆΠ΅ Π±Π΅Π· ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π°? Π­Ρ‚ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ благодаря Service Workers ΠΈ стратСгии ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ. ΠžΡ„Ρ„Π»Π°ΠΉΠ½-ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Π°ΠΆΠ½Π° для ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°, особСнно Ссли ваши ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π² условиях Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ соСдинСния. πŸ”ΉΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ шаги 1. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Create React App CRA ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ Service Worker, которая активируСтся ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΠ΄Π°ΠΊΡˆΠ΅Π½-сборкС. - Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρ„Π°ΠΉΠ» service-worker.js настроСн. - Π’ index.js Π·Π°ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ строку:
serviceWorker.register();
ПослС этого ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ автоматичСски ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ статичСскиС Ρ„Π°ΠΉΠ»Ρ‹. 2. ΠšΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Для динамичСских Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ: - Workbox: ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для управлСния ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. - localStorage/IndexedDB: Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-доступа. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ API-ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ² с Workbox:
import { registerRoute } from 'workbox-routing';
import { StaleWhileRevalidate } from 'workbox-strategies';

registerRoute(
  ({ url }) => url.origin === 'https://api.example.com',
  new StaleWhileRevalidate()
);
3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ошибок сСти Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ошибок, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ Π½Π° отсутствиС соСдинСния. НапримСр, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· локального Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°.
try {
  const response = await fetch('/api/data');
  const data = await response.json();
  setData(data);
} catch (error) {
  setData(localStorage.getItem('offlineData'));
}
4. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ событиС navigator.onLine для отслСТивания статуса ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ.
useEffect(() => {
  const updateStatus = () => {
    setIsOnline(navigator.onLine);
  };

  window.addEventListener('online', updateStatus);
  window.addEventListener('offline', updateStatus);

  return () => {
    window.removeEventListener('online', updateStatus);
    window.removeEventListener('offline', updateStatus);
  };
}, []);
πŸ”Ή Π‘ΠΎΠ²Π΅Ρ‚Ρ‹ - Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Progressive Web App (PWA) для ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΡ„Ρ„Π»Π°ΠΉΠ½-ΠΎΠΏΡ‹Ρ‚Π°. - ΠœΠΈΠ½ΠΈΠΌΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΡΡˆΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… для ускорСния Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ. - РСгулярно обновляйтС кэш, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π°Π»ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. 🎯 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠžΡ„Ρ„Π»Π°ΠΉΠ½-ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΠΎΡΡ‚ΡŒ β€” это шаг ΠΊ созданию Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΠ³ΠΎ ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прилоТСния. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Service Workers ΠΈ стратСгий ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π²Π½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ отсутствии сСти. ReactJs Daily | #pro
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Love Center - Dating, Friends & Matches, NY, LA, Dubai, Global
Find friends or serious relationships easily