Вы должны использовать веб-сервер, который способен обнаруживать функции браузера.
Сама команда Polymer выпустила библиотеку для nodeJS, которая считывает ваш файл polymer.json
, просматривает каталог ваших сборок и выдает правильную сборку в соответствии с функциями, поддерживаемыми браузером клиента. Сам сервер также поддерживает H2 Push, что является хорошей функцией.
https://github.com/Polymer/prpl-server-node
Это моя конфигурация сборки в polymer.json
. Он создает разные сборки для каждой возможности. Я перепроверил, какие версии браузеров поддерживают эти технологии и добавил сборку для каждой необходимой комбинации.
"builds": [{
"name": "none",
"browserCapabilities": [],
"addServiceWorker": true,
"bundle": true,
"swPrecacheConfig": "sw-precache-config.js",
"insertPrefetchLinks": true,
"js": {
"minify": true,
"compile": true
},
"css": {"minify": true},
"html": {"minify": true}
},
{
"name": "noes6",
"browserCapabilities": ["push", "serviceworker"],
"addServiceWorker": true,
"addPushManifest": true,
"swPrecacheConfig": "sw-precache-config.js",
"insertPrefetchLinks": true,
"js": {
"minify": true,
"compile": true
},
"css": {"minify": true},
"html": {"minify": true}
},
{
"name": "nopush",
"browserCapabilities": ["es2015", "serviceworker"],
"addServiceWorker": true,
"swPrecacheConfig": "sw-precache-config.js",
"insertPrefetchLinks": true,
"bundle": true,
"js": {"minify": true},
"css": {"minify": true},
"html": {"minify": true}
},
{
"name": "all",
"browserCapabilities": ["es2015", "push", "serviceworker"],
"addServiceWorker": true,
"addPushManifest": true,
"swPrecacheConfig": "sw-precache-config.js",
"js": {"minify": true},
"css": {"minify": true},
"html": {"minify": true}
}]
И простой экспресс-сервер, который использует библиотеку prpl-server для дифференциального обслуживания (имейте в виду, что это синтаксис ES6):
const prpl = require('prpl-server');
const express = require('express');
const config = require('./build/polymer.json');
const app = express();
app.get('/*', prpl.makeHandler('./build/', config));
app.listen(process.env.PORT || 80);
person
Nicolai Schmid
schedule
04.07.2017