Tôi sẽ bắt đầu bằng cách nói rằng tôi là một người hâm mộ GWT khổng lồ, nhưng vâng, có nhiều cạm bẫy, nhưng hầu hết nếu không phải là tất cả những gì chúng tôi có thể vượt qua:
Vấn đề: Thời gian biên dịch dài, khi dự án của bạn phát triển, số lượng thời gian cần thiết để biên dịch nó. Tôi đã nghe nói về các báo cáo về các biên dịch 20 phút, nhưng của tôi trung bình khoảng 1 phút.
Giải pháp: Chia mã của bạn thành các mô-đun riêng biệt và báo cho kiến chỉ xây dựng mã khi thay đổi. Ngoài ra, trong khi phát triển, bạn có thể tăng tốc độ biên dịch ồ ạt bằng cách chỉ xây dựng cho một trình duyệt. Bạn có thể làm điều này bằng cách đặt nó vào tệp .gwt.xml của bạn:
<set-property name="user.agent" value="gecko1_8" />
Trong đó gecko1_8 là Firefox 2+, tức là 6 là IE, v.v.
Vấn đề: Chế độ được lưu trữ rất chậm (ít nhất là trên OS X) và không gần với các thay đổi 'trực tiếp' bạn nhận được khi bạn chỉnh sửa những thứ như trang JSP hoặc Rails và nhấn refresh trong trình duyệt của bạn.
Giải pháp: Bạn có thể cung cấp cho chế độ lưu trữ nhiều bộ nhớ hơn (tôi thường có 512M) nhưng nó vẫn chậm, tôi đã tìm thấy một khi bạn đủ tốt với GWT, bạn sẽ ngừng sử dụng. Bạn thực hiện một lượng lớn các thay đổi, sau đó biên dịch cho chỉ một trình duyệt (thường là giá trị biên dịch trong 20 năm) và sau đó chỉ cần nhấn refresh trong trình duyệt của bạn.
Cập nhật: Với GWT 2.0+, đây không còn là vấn đề nữa, vì bạn sử dụng 'Chế độ phát triển' mới. Về cơ bản, điều đó có nghĩa là bạn có thể chạy mã trực tiếp trong trình duyệt của mình, do đó, không mất tốc độ, ngoài ra bạn có thể bắn / kiểm tra mã, v.v.
http://code.google.com.vn/p/google-web-toolkit/wiki/UsingOOPHM
Vấn đề: Mã GWT là java và có một tâm lý khác khi đặt trang HTML, điều này khiến cho việc thiết kế HTML và biến nó thành GWT khó hơn
Giải pháp: Một lần nữa bạn đã quen với điều này, nhưng không may chuyển đổi thiết kế HTML sang thiết kế GWT sẽ luôn chậm hơn so với thực hiện một việc gì đó như chuyển đổi thiết kế HTML sang trang JSP.
Vấn đề: GWT mất một chút để có được đầu óc của bạn, và chưa phải là chủ đạo. Có nghĩa là hầu hết các nhà phát triển tham gia nhóm của bạn hoặc duy trì mã của bạn sẽ phải học nó từ đầu
Giải pháp: Vẫn còn phải xem nếu GWT sẽ cất cánh, nhưng nếu bạn là công ty kiểm soát người bạn thuê, thì bạn luôn có thể chọn những người biết GWT hoặc muốn tìm hiểu.
Vấn đề: GWT là một búa tạ so với một cái gì đó như jquery hoặc chỉ là javascript đơn giản. Phải mất nhiều thiết lập hơn để có được nó xảy ra thay vì chỉ bao gồm một tệp JS.
Giải pháp: Sử dụng các thư viện như jquery cho các tác vụ nhỏ hơn, đơn giản phù hợp với các tác vụ đó. Sử dụng GWT khi bạn muốn xây dựng một cái gì đó thực sự phức tạp trong AJAX hoặc nơi bạn cần truyền dữ liệu của mình qua lại thông qua cơ chế RPC.
Vấn đề: Đôi khi để điền trang GWT của bạn, bạn cần thực hiện cuộc gọi máy chủ khi trang tải lần đầu tiên. Người dùng có thể khó chịu khi ngồi đó và xem biểu tượng tải trong khi bạn lấy dữ liệu bạn cần.
Giải pháp: Trong trường hợp trang JSP, trang của bạn đã được máy chủ kết xuất trước khi trở thành HTML, do đó bạn thực sự có thể thực hiện tất cả các cuộc gọi GWT của mình sau đó và tải trước chúng lên trang để tải ngay lập tức. Xem tại đây để biết chi tiết:
Tăng tốc độ tải trang bằng cách tuần tự hóa trước các cuộc gọi GWT của bạn
Tôi chưa bao giờ có bất kỳ vấn đề nào về việc CSS tạo kiểu cho các vật dụng của mình, ngoài hộp, tùy chỉnh hay nói cách khác, vì vậy tôi không biết ý của bạn là gì khi đó là một cạm bẫy?
Về hiệu năng, tôi luôn thấy rằng một khi mã GWT được biên dịch nhanh và các cuộc gọi AJAX gần như luôn luôn nhỏ hơn so với làm mới toàn bộ trang, nhưng điều đó không thực sự độc đáo với GWT, mặc dù các gói RPC gốc mà bạn nhận được nếu bạn sử dụng một mặt sau JAVA khá nhỏ gọn.