我有一个项目,该项目主要由Java Servlet,JSP / HTML页面和一些常规javascript组成。但是,有些屏幕太复杂了,无法仅使用javascript来完成,因此我将为此使用GWT。
是否可以这样做,所以在同一项目中有多个EntryPoint
类?然后,根据要加载的页面,我将加载适当的javascript文件?
我在想,也许RootPanel.get()
函数将用于检查是否存在具有给定ID的某些<div>s
。例如,如果signup div存在,则加载注册GWT控件,如果'search'div存在,则加载Search,但这将使javascript文件变得非常大。我宁愿每个组件都位于其自己的javascript文件中。
那可能吗?
最佳答案
我认为最好将页面分成GWT模块。如果您将使用RootPanel.get()来检查是否存在特定的插槽(DIV或其他元素),则您的模块将容纳您的所有UI,因此客户端将加载整个模块,仅访问一个页面-这是不必要的开销。
您可以将通用代码放在所有页面模块都将继承的某个模块中。
RootPanel.get()更适合您使用一组小部件(UI中的逻辑面板,例如菜单,主要内容等),并且可以将其放置在页面上的适当位置。
应用程序中的示例结构如下所示(请参阅注释中的问题):
- gwtui
-- common (module1)
--- client
---- widgets (eg. common widgets)
---- ...
---- ApplicationService.java
---- ApplicationServiceAsync.java
--- public
---- images (common images etc.)
---- css (common style)
---- ...
--- server
---- ...
---- ApplicationServiceImpl.java
--- GwtCommon.gwt.xml
-- expenses (module2)
--- client
---- ExpensesEntrypoint.java
--- public
--- server
--- GwtExpenses.gwt.xml (inherits GwtCommon, entry point ExpensesEntrypoint)
-- reports (module2)
--- client
---- ReportsEntrypoint.java
--- public
--- server
--- GwtReports.gwt.xml (inherits GwtCommon, entry point ReportsEntrypoint)
请注意,您可以在所有模块中使用一种服务,在通用模块中也可以不必创建入口点(但是我不确定100%,在某些旧项目中我必须创建空入口点,但是不要不记得确切原因-对不起)
那对我们有用。
我当然希望听到不同的意见。