GWT如何为每个浏览器提供正确的Javascript代码,例如执行i18n和浏览器兼容性
How does GWT provide the correct Javascript code to every browser e.g. to carry out i18n and browser compatibility?
我对GWT很陌生,在我跳入Vaadin世界后,我开始研究它。
从维基上阅读以下内容:https://code.google.com/p/google-web-toolkit-doc-1-5/wiki/FAQ_DeferredBindingDefinition
GWT当 GWT 编译器编译您的 Java 应用程序时,它会确定 它必须支持并产生的所有不同的"特质" 一个单独的、严格简化的应用程序版本,用于此 特定配置。例如,它会生成不同的版本 Firefox 的应用程序文件比 Opera 的应用程序文件。
。
延迟绑定的另一个典型示例是国际化: GWT 编译器使用延迟绑定来生成一个完整的 每种语言的应用程序的单独版本。为什么 讲英语的人必须下载您的申请的法语文本吗?
使用延迟绑定并将Java代码编译为针对目标浏览器优化的不同Javascript,对于每种浏览器,GWT还可以为每种语言生成JS子集以允许i18n。
现在,关于延迟绑定的解释,这一切都是在编译时完成的,但实际上在运行时,当有对服务器的传入请求时,使用 GWT 编写的应用程序如何知道浏览器是 Chrome、Firefox 还是 Opera?它是否解析请求的用户代理标头?(我会对此表示怀疑,因为它不是那么可靠)它是否使用一种Javascript"引导"客户端代码,该代码在运行时快速确定用户的浏览器,然后向服务器发出异步请求,以使用该语言环境为该浏览器下载适当的优化,特定于语言的Javascript代码?
魔法到底是怎么发生的?
感谢您的关注!
它是否使用一种Javascript"引导"客户端代码 在运行时快速确定用户的浏览器,然后使 向服务器发出异步请求以下载适当的优化, 具有该语言环境的浏览器的特定 Javascript 代码?
事实正是如此。有一个非常小的引导 javascript 文件(yourmodulename.nocache.js),您可以从 html 页面加载(使用普通的 <script>
标记)。该脚本使用 navigator.userAgent
确定浏览器类型,并从那里动态加载"浏览器依赖"部分(应该缓存,因为它可能很大)。
在编译时,GWT 确定需要多少排列(外部因素的组合,例如浏览器模型、资源语言等)。然后为每个组合生成一个生成的 JavaScript 模块。
当您部署所有这些文件时,每个客户端在访问您的网站时只会下载与他相关的文件。
- 如何知道浏览器javascript的名称
- 跨浏览器javascript下载功能
- 如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
- 有没有办法从浏览器javascript打开Windows 10上的Microsoft地图
- 如何从应用程序的服务器端向浏览器 JavaScript 发送事件
- 浏览器Javascript - 任何了解用户当前IP的方法
- 如何强制浏览器/javascript 清除/忽略缓存文件
- 在浏览器 (javascript) 中将 Cognito 凭证与 AWS 配合使用时,不断收到“缺少凭证”错误
- 读取使用浏览器 Javascript 忽略的文件
- 如何在浏览器 JavaScript 中维护来自同一站点的不同页面加载的状态
- 跨浏览器JavaScript,用于从用户的选择中获取和替换确切的HTML
- 在关闭浏览器 javascript 时删除本地存储
- 如何在android浏览器javascript中捕获退格键代码
- 使用JavaScript启用和禁用浏览器JavaScript选项
- 浏览器Javascript:setTimeout和主程序
- 了解开发者控制台在当前浏览器(JavaScript)中是否处于活动状态
- 是否可以验证浏览器Javascript会话的完整性
- 我们可以期待一个浏览器javascript API到DNS解析程序
- node.js和浏览器javascript的配置相同
- 使用浏览器JavaScript SDK检查AWS S3上是否存在文件