我正在编写Polymer 2应用程序。默认情况下是将ES6转换为ES5,以便您可以使用ES6语法并确保它可以正常工作。
问题在于每个人(甚至支持浏览器)都可以接收转换后的代码。
两个问题:
对旧版浏览器说“不”是不是太疯狂了,只是停止转换?
是否有一种简单的方法可以将特定浏览器重定向到应用程序的非转换版本?
答案 0 :(得分:0)
这实际上取决于您要创建的应用的受众群体。至于我自己的项目,我可以在我的Google Analytics中看到,仍有一些人通过Safari 8,9甚至IE 11访问它。我不能告诉他们使用不同的浏览器,原因有几个......主要是财务原因(个人或公司)
因此,我仍然默认只是转发回ES5(假设我现在正在使用Webpack,同时等待脚本类型=“模块”稳定)。
至于最简单的方法,他们说如果你使用Polymer-CLI的服务功能,它会根据浏览器的功能自动传输你的代码。
或者你可以有一个简单的javascript代码试图检查ES6方法,然后如果它工作,它加载捆绑代码的ES6版本......如果没有,它加载捆绑代码的ES5版本+定制元素-ES5适配器。但是由于等待解析初始JS脚本以在加载必要文件之前进行检查而不是立即加载它(但我没有测试过这个),这个会受到一些性能影响。
或者您可以检查服务器正在调用哪种类型的浏览器,然后尝试猜测您要发送的版本代码类型。
至于转换代码的开销的性能,它有点微不足道,因为如果你只是使用Polymer.Element,你可以得到至少12KB的代码...那么你将有30 + KB留下来显示内容,这足以让PRPL + 50
答案 1 :(得分:0)
简单的答案是使用prpl-server-node,这正是我所说的,甚至更多。 具体做法是:
差异服务
现代浏览器提供了可提高性能的强大功能,但大多数应用程序也需要支持旧版浏览器。 prpl-server可以通过使用用户代理标头检测浏览器功能,为不同的浏览器提供不同版本的应用程序。
构建
prpl-server理解构建的概念,构建是针对特定浏览器功能集优化的应用程序的变体。