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