我处于我们选择使用GWT实施的项目的开始/中期。是否有人在使用GWT(和GWT-EXT)时遇到无法克服的重大陷阱?从性能角度来看如何?
我们已经看到/听到的几件事已经包括:
寻找关于这些项目的任何其他反馈。谢谢!
我首先要说我是GWT的忠实拥护者,但是是的,有很多陷阱,但是大多数(即使不是全部)我们都能够克服:
问题: 编译时间长,随着项目的增长,编译所需的时间也会增加。我听说有20分钟的编译报告,但我的平均水平约为1分钟。
解决方案:
将您的代码分成单独的模块,并告诉ant仅在更改时才构建它。同样,在开发过程中,仅通过构建一个浏览器就可以大大加快编译速度。您可以通过将其放入.gwt.xml文件中来实现此目的:
<set-property name="user.agent" value="gecko1_8" />
其中gecko1_8是Firefox 2+,即ie6是IE等。
问题: 托管模式非常慢(至少在OS X上是这样),并且与在编辑JSP或Rails页面之类的东西并在浏览器中刷新时获得的“实时”更改相差甚远。
解决方案:
您可以为托管模式提供更多的内存(我通常使用512M),但是它仍然很慢,我发现一旦您对GWT足够好就可以停止使用它。您进行了大量更改,然后仅针对一个浏览器进行编译(通常需要20秒钟的编译时间),然后在浏览器中单击刷新。
更新:对于GWT2.0+,这不再是问题,因为您使用了新的“开发模式”。基本上,这意味着您可以直接在您选择的浏览器中运行代码,因此不会损失速度,而且您可以对它进行调试/检查等。
http://code.google.com/p/google-web-
toolkit/wiki/UsingOOPHM
问题: GWT代码是Java,与布局HTML页面的思路不同,这使得采用HTML设计并将其变成GWT变得更加困难
解决方案: 您再次习惯了这一点,但是不幸的是,将HTML设计转换为GWT设计总是比将HTML设计转换为JSP页面的速度慢。
问题: GWT需要花些时间来解决,它还不是主流。这意味着大多数加入您的团队或维护您的代码的开发人员将不得不从头开始学习它。
解决方案: GWT是否会起飞还有待观察,但是如果您是一家由您控制聘用人员的公司,那么您始终可以选择了解GWT或想要学习GWT的人员。
问题: 与jQuery或纯JavaScript相比,GWT是一把大锤。要使其发生,需要花更多的时间进行设置,而不仅仅是添加一个JS文件。
解决方案:
将jquery之类的库用于适合它们的较小,简单的任务。当您想在AJAX中构建真正复杂的东西,或者需要通过RPC机制来回传递数据时,请使用GWT。
问题: 有时为了填充GWT页面,您需要在页面首次加载时进行服务器调用。用户在获取所需数据时坐在那里观看加载符号可能会很烦人。
解决方案:
对于JSP页面,您的页面在变为HTML之前已经由服务器呈现,因此您实际上可以随后进行所有GWT调用,并将它们预加载到页面上以进行即时加载。详细信息请参见此处:
通过预序列化GWT调用来加快页面加载速度
我从来没有遇到过CSS样式化小部件(无论是开箱即用,自html" target="_blank">定义还是其他方式)的问题,所以我不知道这是陷阱是什么意思?
至于性能,我总是发现,一旦编译的GWT代码很快,并且AJAX调用几乎总是比刷新整个页面小,但这并不是GWT真正独特的,尽管如果使用JAVA后端非常紧凑。
我得到了以下练习:给定一个int数组,返回递归数组中两组不同数字之间的最低绝对差异。例如:如果你有以下数组:{5,4,2}最低差异是1,因为如果你把它拆分为2组:{5},{4,2}你得到: Math.abs(5-6)=1。另一个例子:如果你有以下数组:{4,3,2,1}最低差异是0,因为如果你把它分成两个组:{4,1},{3,2}你得到:Math.abs(5-5)=0。这必须是递归的,你可以创建尽
while (<STDIN>) 一定要小心这点。如果你不知怎么回事地得到了假值(如:空行),你的文件可能 停止处理了。假如你在处理文件读取(除非修改了 $/),这种事一般不会发生, 但却可能发生。 你更喜欢这样运行: while (readdir(DIR)) { 假设你有文件名为 0 的话,那么程序将停止,且不会继续处理文件。 更合适的 while 循环看起来像这样: while ( defin
同一级别上的所有节点相互独立。 交替级别上的所有节点彼此独立(没有父/子关系) 警告:我在考试时想出了这个,它并不漂亮,但我只是想看看我是否能至少争取到部分学分。 那么,为什么不能直接建立两个独立的集合(一个用于奇数级别,一个用于偶数级别)呢? 我的教授声称这行不通,但我不明白为什么。为什么行不通?
在绝大多数情况下, React都是清晰直观的. 但是也不乏有一些小陷阱, 不注意的话有时候也会给你”意外的惊喜”. 下面我们就来介绍一下这些小陷阱 参考资料 React Gotchas Top 5 React Gotchas
问题内容: 所以基本上我正在生成随机的10000个IP地址,我想存储在HashSet中找到的所有那些IP地址,但是根据我的计算,发现了大约6000个IP地址,但是在HashSet中仅存储了700个IP地址?HashSet在存储String方面是否有任何限制。任何建议将不胜感激。 问题答案: 就您而言,没有限制(限制是数组的最大大小,即2 ** 31)。 但是,仅存储 唯一 值,因此我的猜测是您仅生
问题内容: 为什么会限制其大小? 我浏览了一些链接:http : //www.coderanch.com/t/540346/java/java/maximum-size-hold- String-buffer 。 是因为count成员变量是int吗? 假设我们有2 ^ 31-1个字符,并在其中追加了一些字符。Count成员变量将增加附加的字符数,如果Count变量已经达到最大值(2 ^ 31-1)