Mic*_*int 36 javascript java ajax gwt
我一直在阅读GWT中一堆"最高投票"的问题.其中一些问题涉及GWT的缺陷或问题.
在文章中:哪个Javascript框架(jQuery vs Dojo vs ...)?而最大的GWT陷阱?,一些海报似乎表明GWT不够轻,或者有更好的替代品可以使用.
你们中的大多数人都觉得GWT有问题没有用GWT 2.0修复 - 这会让你倾向于建议在新项目中使用更简单的框架吗?
在某种程度上,GWT不应该在某种程度上面向未来(因为你不必担心它在发布之间发生巨大变化,因为它得到谷歌的支持)?
我意识到这个问题的答案在很大程度上取决于你想做什么或你想做什么.我从启动一个最终将被数百万用户使用的新Web应用程序的角度来看这个.
Igo*_*mer 52
让我们从我能想出的所有权衡开始:
<div>
进入单独的对象,这将使代码都很好,整洁".当然,我是过度夸大它,但你明白了一点-它很容易想象,一个没有经验的程序员可以把一个成熟的Widget
,有很多的Handlers
中的每一个细胞FlexTable
......然后他(她)会浪费了很多时间,想知道为什么应用程序感觉迟钝;)tl;博士:GWT中的初学者很容易通过编写符合文档/样本/常识的代码来使他们的应用程序"膨胀";)建议这就是我能想到的权衡 - 如果有人想要添加一些内容,请添加评论.
现在为了优势.我将跳过一些像国际化,跨浏览器兼容性的免费,轻松与其他谷歌库集成等,因为它们有点明显且易于掌握.我会尝试专注于不太强调但仍然非常重要的功能:
所以它可以优化这样的东西:
public class ShapeExample implements EntryPoint {
private static final double SIDE_LEN_SMALL = 2;
private final Shape shape = new SmallSquare();
public static abstract class Shape {
public abstract double getArea();
}
public static abstract class Square extends Shape {
public double getArea() { return getSideLength() * getSideLength(); }
public abstract double getSideLength();
}
public static class SmallSquare extends Square {
public double getSideLength() { return SIDE_LEN_SMALL; }
}
public void onModuleLoad() {
Shape shape = getShape();
Window.alert("Area is " + shape.getArea());
}
private Shape getShape() { return shape; }
}
Run Code Online (Sandbox Code Playgroud)
..到这个:
public class ShapeExample implements EntryPoint {
public void onModuleLoad() {
Window.alert("Area is 4.0");
}
}
Run Code Online (Sandbox Code Playgroud)
然后混淆这个并尽量减少.另外,这是以这种方式完成的,这使得生成的文件可以通过gzip更加可压缩.
根据您的经验和/或偏好,以下可能是一个优势(对我而言,但有时它是PITA;))或不:
SuggestBox
有很多地方,你可以用自己的覆盖默认行为-你可以指定一个不同的方式来显示的建议(SuggestBox.SuggestionDisplay
),触发一个自定义操作,当用户选择一个建议(SuggestBox.SuggestionCallback
),或者只是提供自定义SuggestOracle
用于供给SuggestBox
与Suggestion
小号...底线是 - 尝试GWT,你很可能会喜欢它,并且永远不会想再用纯JavaScript编写;)
Dmi*_*din 10
我们正在使用GWT定期构建小型(~2K Java类)到中型(~6K)企业系统,因为版本1.3已经发布.我知道在公共站点中有一组不同的问题要解决,每秒有一千次点击,但我会试着说明我们在GWT 1.x中遇到的最大问题以及GWT 2.0如何解决这个问题.
浏览器内存泄漏 IE6泄漏与GWT是巨大的,IE7泄漏可以通过定期页面刷新来补偿,IE8承诺在这方面有一些稳定性,但在企业中尚未被广泛接受.是的,即使是没有本机JS调用的有效GWT代码也会在某些情况下泄漏内存.特别是当UI很复杂并且你正在做很多Panel.clear()调用时.目前没有有用的工具来确定泄漏的真正原因.除非你知道如何破解浏览器本身.
渲染性能您必须非常仔细地编写UI代码,尤其是在构建常用的自定义小部件时.仍然需要深入的JavaScript,CSS和DOM知识.关于这个主题,互联网上有很多材料.您需要知道如何以及何时从GWT小部件级别下载到直接DOM操作.
可下载内容的大小在2.0之前不可能将模块拆分到不同的可下载部分而不需要在应用程序中内置"硬"导航.但这将清除JavaScript上下文并需要窗口重新加载.
UI开发人员Mind Shift经验丰富的UI开发人员只是不了解Java和OOP.有经验的Java开发人员不了解CSS,JS,HTML,也不喜欢构建UI.UI Binder走向正确的方向.
我们已经完成了迁移1.3 - > 1.5 - > 1.7,它总是只是一个重新编译和一些CSS修复.GWT 2.0删除了许多已弃用的代码和初始方法(项目结构,GWTShell),并且可能很难快速迁移.但是所有功能看起来都很有前景,谷歌在某些时候已经放弃了遗留代码.我不确定2.0的稳定性,因为我们还没有在实际项目中使用它.
希望这可以帮助.
归档时间: |
|
查看次数: |
16519 次 |
最近记录: |