Создание PWA приложений

Прогрессивные веб-приложения PWA позволяют ExtJS разработчикам расширить возможности приложения. С использованием PWA появляются две основные возможности, это кеширование AJAX запросов (посредством web workers , как следствие улучшается возможность offile работы приложения) и возможность добавлять ярлык приложения на Home Screen мобильного устройства, остальные плюсы можно почитать тут.  В этой статье мы расскажем вам :

  • Что необходимо для создания PWA с помощью ExtJS
  • Требования к PWA приложениям
  • Кеширование AJAX запросов
  • Управление конфигурацией стратегии кеширования

Создание PWA приложения

Для добавления PWA к приложению ExtJS необходимо определить progressive manifest в app.json приложения.

"progressive": {
      "manifest": {
         "name": "Progressive App",
         "short_name": "PWA",
         "icons": [
            {
               "src": "resources/pwa96.png",
               "sizes": "96x96"
            },
            {
               "src": "resources/pwa192.png",
               "sizes": "192x192"
            },
            {
               "src": "resources/pwa256.png",
               "sizes": "256x256"
            }
         ],
         "theme_color": "#054059",
         "background_color": "#054059",
         "display": "standalone",
         "orientation": "portrait",
         "start_url": "/index.html"
      }
}

Так же рекомендуется включить loader caching для js скриптов, css файлов и изображений, для этого в app.json необходимо внести изменения

"loader": {
         "cache": true,
         "cacheParam": "_dc"
},
"production": {
        ...,
        "loader": {
            "cache": true
        },
        ...
}

Требования к PWA приложениям

Работа с сервером посредством AJAX запросов разрешается только через https транспорт.

Для сборки необходимо:

  • NodeJS  6+
  • Cmd >= 6.5
  • ExtJS >= 6.x

На стороне клиента необходимо

  • Google Chrome Browser 56+
  • Android 5.0+

Поддержка Egde обещана в будущем (на момент написания статьи) . Для Safari уже есть поддержка в beta версиях, подробнее тут.

Кеширование AJAX запросов

Для включения кеширования необходимо добавить соответствующий хинт к используемому proxy.

Ext.define('PWA.store.Personnel', {
    extend: 'Ext.data.Store',
    alias: 'store.personnel',
    fields: [
       'name', 'email', 'phone'
    ],
    autoLoad: true,
    proxy: {
       // @sw-cache
       url: 'resources/personnel.json',
       type: 'ajax',
       reader: {
           type: 'json',
           rootProperty: 'items'
       }
    }
});

Управление конфигурацией @sw-cache

Для более сложных случаев рассмотрим пример

Ext.define('App.model.Event', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'date'],
    proxy: {
        type: 'rest', 
        // @sw-cache { urlPattern: "\\/api\\/events\\/\\d+", options: { cache: { name: 'events', maxEntries: 10 }}}
        url : '/events'
    }
});

Далее необходимо сконфигурировать web worker в соответствующей секции progressive manifest .

"progressive": {
    "serviceWorker": {
        "runtimeCaching": [
            {
                "urlPattern": "\\/api\\/events"
            }, 
            {
                "urlPattern": "\\/api\\/events\\/\d+",
                "options": {
                    "cache": {
                        "name": "events",
                        "maxEntries": 10
                    }
                }
            }
        ]
    }
}

О дополнительных конфигурациях @sw-cache рекомендуется ознакомиться тут.

PS

Помните что Web serive workers работают только в production сборках. Скачать пример PWA приложения можно тут.

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *