2010-02-16 26 views
9

Tôi đang gặp khó khăn trong việc cấu trúc ứng dụng GWT của mình ngay. (Tôi có phải là người duy nhất tìm thấy mã GWT rất dễ dàng kết thúc rất lộn xộn và không thể đọc được không?)GWT - Nhiều mô-đun?

Ứng dụng này được coi là một giao diện cho một vài khu vực riêng biệt - cho chúng tôi nói khu A và B Hiện tại tôi đang cố gắng để thực hiện nó như một giao diện với hai tab - một đưa bạn đến khu vực A và một đưa bạn đến khu vực B. Tôi không thấy làm thế nào tôi có thể có một sự tách biệt đẹp mã số hai khu vực khác nhau theo cách này mặc dù - áp dụng mô hình MVP (mà tôi thực sự không thấy rõ ràng cách thực hiện trong trường hợp giao diện phân cấp như tab của tôi) Tôi kết thúc có khu vực A và khu vực B mã cho dụ cả client.view và client.presenter gói:

 
src 
- main 
    - java 
     - client 
      + event 
      - presenter 
       + a_stuff 
       + b_stuff 
      - view 
       + a_stuff 
       + b_stuff 
: 

tôi đã không thể tìm thấy bất kỳ ví dụ tốt về cách thức và thời sử dụng nhiều module và tôi tự hỏi nếu trường hợp của tôi có thể là một trong những nơi nhiều module sẽ có ý nghĩa? Mã sẽ được cấu trúc như thế nào trong trường hợp đó?

Có thể có liên quan đến đề cập đến việc tôi đang sử dụng GWT, Maven và IntelliJ IDEA mới nhất.

gợi ý sẽ được đánh giá rất nhiều, thanks a lot từ Stine :)

Trả lời

0

Tôi đề nghị một cái gì đó như thế này:

src 
- main 
    - java 
     + a_stuff 
      -client 
      - presenter 
      - view 
      - event 
     + b_stuff 
      -client 
      - presenter 
      - view 
      - event 
+0

Xin lỗi nếu tôi hơi chậm ở đây! Nhưng điều đó có dẫn đến hai mô-đun không? – Stine

+2

Không, bạn cần hai tệp mô-đun: http://code.google.com/webtoolkit/doc/latest/DevGuideOrganizingProjects.html#DevGuideModuleXml - xem phần "Chia mã thành nhiều mô-đun" –

+0

Có, tôi biết rằng mỗi mô-đun mất một gwt.xml :) Những gì tôi có nghĩa là (tôi đoán) là nếu mã có thể được đưa vào cấu trúc trên và vẫn là một phần của cùng một mô-đun. Nếu nó ngụ ý hai mô-đun tôi có thể có một chút của một vấn đề hiểu những gì xảy ra với tất cả các html, css, và hình ảnh tôi có trong thư mục webapps của tôi. Trời ơi, tôi chỉ thích xem một ví dụ kỹ lưỡng! > D tốt, đoán tôi nên bắt đầu bằng cách nhìn vào phần bạn đề nghị - vì lý do nào đó tôi đã bỏ lỡ một! ;) Cảm ơn bạn .. – Stine

2

xem xét khai báo nhiều phần tử nguồn trong tệp yourmodule.gwt.xml của bạn. Nếu không có phần tử nguồn nào được khai báo, thì theo mặc định, gwt giả định một khai báo "client". Xem dưới đây:

<!--Default if not declared--> 
<source path="client"/> 

Bạn có thể khai báo nhiều địa điểm nguồn như thế này:

<source path="a_stuff"/> 
<source path="b_stuff"/> 

Bây giờ tất cả mọi thứ bên dưới mỗi nguồn sẽ được biên dịch. "Khách hàng" chỉ là mặc định, không phải là quy tắc.

10

Dưới đây là một ví dụ kỹ hơn đã giúp tôi có được hai mô-đun làm việc: http://ashtoncthomas.blogspot.com/2011/02/multiple-modules-in-google-web-toolkit.html

Nó sử dụng cấu trúc:

src 
- main 
    - java 
     a_stuff.gwt.xml 
     b_stuff.gwt.xml 
     - client 
       - shared_stuff 
       - a_stuff 
        - presenter 
        - view 
       - b_stuff 
        - presenter 
        - view 

Nếu bạn muốn hai trang HTML - một cho mỗi mô-đun (như tôi đã làm), sau đó bạn cần phải tạo hai trang:

war 
    page_a.html 
    page_b.html 

Và xác định điểm nhập của bạn trong hai tệp .gwt.xml, ví dụ (đối với a_stu ff.gwt.xml):

<module rename-to='module_a'> 

    ... your stuff here ... 

    <entry-point class="main.java.client.a_stuff.A_entry_point"></entry-point> 
</module> 

Trường hợp A_entry_point là lớp thực hiện EntryPoint.

Sau đó, trong trang HTML của bạn, chỉ bao gồm các module bạn muốn (ví dụ, trong page_a.html):

<script type="text/javascript" language="javascript" 
     src="module_a/module_a.nocache.js"></script> 

Ngoài ra, nếu bạn đang sử dụng Eclipse, sau đó khi bạn bấm vào "GWT Biên dịch dự án ", nó sẽ yêu cầu bạn" Thêm một lớp điểm vào ", vì vậy bạn phải bấm vào nút" Add "trong phần" Entry Point Modules "của cửa sổ GWT Compile, và thêm cả hai mô-đun điểm vào của bạn (a_stuff.gwt.xml) và b_stuff.gwt.xml). Bạn có thể thêm/xóa các mô-đun điểm vào từ đây nếu cần, để chọn mô-đun nào cần biên dịch.

Điều trên đã hiệu quả đối với tôi. Tôi đã sử dụng nó để tạo hai phiên bản khác nhau của trang web, mỗi phiên bản trong một mô-đun riêng biệt.

+1

Xin chào, nhưng điều gì về tệp WAR/WEB-INF/web.xml? Đó là "" ... tại sao tôi nên chọn trang mặc định? Web.xml này có cần servlet từ Admin và ứng dụng Người dùng không? – nzaero