如何为IE 11提供不同的Web组件

时间:2017-06-23 05:08:19

标签: polymer web-component polymer-2.x

我配置了我的"聚合物构建" (v 2.0)仅为IE 11转换ES5版本,但现在我只需要为IE 11用户提供该版本,为所有其他浏览器提供ES6版本。实现这一目标的最佳方法是什么?

理想情况下,我想在任何客户端页面中使用我的自定义元素只使用一次导入,并在服务器上使用某些逻辑来显示相应的版本,但作为网络组件的新手,我不会&#39如果有正确的方法,那么我想要自己解决这个问题(这可能会很糟糕)#34;这样做(到目前为止我还没有找到它,但我一直在寻找)。

感谢。

1 个答案:

答案 0 :(得分:1)

您应该使用能够检测浏览器功能的网络服务器。

Polymer Team本身已经发布了一个nodeJS库,它读取你的<h2>Example of sending data using POST</h2> Name : <input type="text" id="name"><br/> Student number: <input type="text" id="snumber"><br/><br/> <input type="button" value="submit" onclick="test();">文件并查看你的builds目录,并根据客户端浏览器支持的功能提供正确的版本。服务器本身也支持H2 Push,这是一个不错的功能。

https://github.com/Polymer/prpl-server-node

这是polymer.json中的构建配置。它为每个功能生成不同的构建。我交叉检查,哪些版本的浏览器支持这些技术,并为每个neccecary组合添加了构建。

polymer.json

一个简单的快速服务器,利用prpl-server库进行差异服务(记住,这是ES6语法):

"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}
}]