2011-08-19 10 views
8

Sau khi chơi với Vaadin trong khoảng một tuần, tôi tò mò về cách Vaadin sử dụng GWT. GWT biên dịch Javacode thành Javascript. Điều này phải được thực hiện mọi lúc khi bạn đang triển khai lại.Hiểu được cách Vaadin sử dụng GWT

Vì Vaadin phải được hiểu là khung làm trung tâm máy chủ, loại bỏ tính linh hoạt của bạn khi viết Mã được thực thi trên Clientside và chuyển mọi thứ sang máy chủ (âm thanh tệ hơn thực tế), Trình biên dịch GWT chỉ chạy một lần một thời gian. Ví dụ điều này xảy ra khi bạn nhập một plugin từ trang web vaadin.

Nhưng nó không thể dễ dàng như vậy? Nếu nó chỉ biên dịch mã của các plugin cho javascript, điều này có thể đã thực hiện trước đó.

Vì vậy, câu hỏi của tôi là:

Khi nào VAADIN sử dụng GWT Compiler và nó làm gì vào thời điểm đó khác hơn là biên dịch để js?

Trả lời

14

Về cơ bản bạn có quyền, và chủ yếu là tự trả lời câu hỏi.

Trong Vaadin các thành phần giao diện người dùng bao gồm hai phần:

  1. Server-side "thành phần" biên soạn sử dụng JDK
  2. Client-side "phụ tùng" biên soạn sử dụng GWT

Những bộ phận giao tiếp với nhau qua HTTP và tự động đồng bộ hóa trạng thái của họ khi cần. Phần phía máy chủ duy trì trạng thái của thành phần giao diện người dùng và tiện ích phía máy khách hiển thị trạng thái đó.

Nhà phát triển ứng dụng thường chỉ sử dụng các thành phần phía máy chủ để xây dựng ứng dụng và họ không thực sự phải quan tâm đến cách hoạt động của phía máy khách.

Nói chung, các thành phần mới để Vaadin thể được phát triển theo hai cách:

  1. Soạn thành phần hiện có
  2. Tạo một widget mới với GWT/JavaScript (+ khác client-side công nghệ)

Phương pháp đầu tiên ở đây sử dụng các lớp hiện có và không cần biên dịch lại các widget với GWT. Chỉ có mã ứng dụng được biên dịch (với trình biên dịch JDK). Tuy nhiên, trong kịch bản thứ hai, các lớp phía máy khách thay đổi và cần biên dịch lại. Đây là khi trình biên dịch GWT là cần thiết.

Do tính chất nguyên khối của JavaScript được biên dịch GWT (bất kể tính năng tách mã mới của GWT không gian tên là toàn cục) Vaadin sử dụng khái niệm bộ tiện ích. Đó là một mô-đun GWT chứa tất cả các tiện ích cần thiết trong ứng dụng. Điều đó có nghĩa là việc thêm các widget (phía máy khách) mới vào một ứng dụng cần phải biên dịch lại GWT. Nó cũng là một thực hành tốt để biên dịch lại bộ widget khi loại bỏ các widget để tối ưu hóa kích thước thiết lập widget.

Chính bước biên dịch GWT không có gì đặc biệt. Tuy nhiên, bản thân Vaadin chứa rất nhiều bổ sung, trợ giúp và giải pháp cho các lớp GWT được áp dụng và sử dụng bởi các widget.

Tất cả điều này là khá rõ ràng khi sử dụng tiện ích bổ sung của Vaadin (xem http://vaadin.com/directory).Ngay cả phần bổ sung cũng chỉ đơn giản là các tệp jar, nếu chúng chứa một mã widget phía máy khách mới, thì việc biên dịch tập hợp widget bằng cách sử dụng GWT là cần thiết, khi chúng được thêm vào một dự án.