【问题标题】:Separating Spring and Dojo single page app codebases分离 Spring 和 Dojo 单页应用程序代码库
【发布时间】:2012-09-14 17:43:52
【问题描述】:

我正在开发一个带有 Spring Roo REST API 后端和 Dojo 单页客户端应用程序的 Web 应用程序。 Spring Roo 提供了一个方便的管理界面(带有 Web MVC)开箱即用,所以我想保持对管理职责的可访问性。

但是,我希望 Dojo 应用程序尽可能与服务器应用程序分离。服务器是我们期望开发新客户端应用程序的平台,因此我想单独开发“官方”客户端 Web 应用程序。

构建应用程序代码的最佳(甚至只是一种好方法)是什么?将服务器单独用作 API 和管理界面很容易,但是所有 Dojo JS 都在哪里?它在 Spring webapp 目录中可以正常工作,但是一旦结构变得更复杂或移动到其他任何地方,它就会很快变得复杂(Spring URL 映射对我来说仍然非常不透明)。理想情况下,它可以本地托管在开发机器上,这也引入了所有跨域 JS 问题。

【问题讨论】:

  • 基于 Spring 的 Web 服务作为后端在一个单独的项目中如何,在另一个项目中使用基于 Dojo 的前端来对这些 Web 服务进行 AJAX 调用?
  • 这就是我所追求的,但是相对于 Spring 项目,我应该如何构建 Dojo 项目呢? Spring 将在 Web 服务器后面的应用程序服务器中运行,而 Dojo 可能是从 Web 服务器提供的。

标签: javascript spring dojo directory-structure


【解决方案1】:

自从最新版本的 dojo 工具包问世以来,我们实际上不必区分同域和跨域 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();

});

【讨论】:

  • 谢谢,这看起来正是我想要的!我没有考虑在包中使用绝对 URL。我还不太确定我们将如何在我们的案例中实现它,但我怀疑它会起作用。该引导代码可以很容易地添加到我们现在拥有的 Spring 应用程序中,这很好。
  • 很高兴为您提供帮助。唯一需要注意的是,自 v1.6 以来,这已经发生了根本性的变化。以前使用过包装器声明格式,此后不再需要
猜你喜欢
  • 2011-07-31
  • 2010-09-21
  • 1970-01-01
  • 2013-10-05
  • 2018-06-25
  • 1970-01-01
  • 2015-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多