2012-09-22 64 views
1

我正在使用Spring Roo REST API後端和Dojo單頁客戶端應用程序開發Web應用程序。 Spring Roo開箱即用地提供了一個方便的管理界面(使用Web MVC),所以我希望保持可訪問的行政職責。分離Spring和Dojo單頁應用程序代碼庫

但是我希望Dojo應用程序儘可能與服務器應用程序分離。服務器是我們期望開發新客戶端應用程序的平臺,所以我想單獨開發'官方'客戶端web應用程序。

什麼是構建應用程序代碼的最好方法?將服務器單獨作爲API和管理界面很容易,但Dojo JS的所有功能在哪裏?它在Spring webapp目錄中工作正常,但只要結構變得更復雜或移動到其他地方(Spring URL映射對我來說仍然非常不透明),它就會很快變得複雜。理想情況下,它可以在開發機器上本地託管,它也引入了所有跨域JS問題。

+0

怎麼樣在不同的項目,這使得AJAX調用Web服務的那些基於Spring Web服務作爲後端與道場基於前端一個單獨的項目? –

+0

這就是我所追求的,但我應該如何構建相對於Spring的Dojo項目呢? Spring將運行在Web服務器後面的應用程序服務器中,並且Dojo大概是從Web服務器提供的。 – orlade

回答

1

由於後者版本的dojo工具包出來了,我們實際上不必區分同域JavaScript模塊和跨域javascript模塊。使用dojo加載器,您可以從任何地方獲取模塊。

我會建議你自己創建一個名字空間,例如com.yourmodule,然後在配置中引用其位置。例如;你可以爲js應用程序創建一個主機'arbitrary.domain',並把它放在'/ com/yourmodule /'文件夾中。 com.yourmodule.application包含應用程序的引導和初始化。這個ofc將在'/com/yourmodule/application.js'文件中。

第一個要求(或通過dojoConfig)指定包聲明,指向名稱空間位置,有點像這樣 - 遵循上述示例命名約定。

require({ packages : [ 
    { 
     name: 'com.yourmodule', 
     location: 'http://arbitrary.domain/com/yourmodule' 
    } 
]}, [ "com/yourmodule/application" ], function(Application) { 

    window.application = new Application(); 

}); 
+0

謝謝,那看起來正是我想要的!我沒有考慮在軟件包中使用絕對URL。我不確定我們將如何在我們的案例中實施它,但我懷疑它會起作用。該引導代碼可以很容易地添加到我們現在的Spring應用程序中,這很好。 – orlade

+0

很高興幫助。只有注意你應該知道的是,自v1.6版本以來這已經發生了根本性的變化。之前已經使用了包裝聲明格式,從此不再需要 – mschr

相關問題