Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails应用程序文件夹组织最佳实践_Grails - Fatal编程技术网

Grails应用程序文件夹组织最佳实践

Grails应用程序文件夹组织最佳实践,grails,Grails,我正在努力在Grails2.3.8应用程序中组织域、控制器和视图。应用程序现在非常小,但它计划变得更大,我想更好地组织文件夹结构和包命名约定。理想情况下,我希望有以下结构,但我相信有更好的方法。我会很高兴地欢迎你们的精彩解决方案 领域 项目 类别 控制器 管理员 公开的 ItemController (package = com.example.public, namespace = public) CategoryController (package = com.example.admin,

我正在努力在Grails2.3.8应用程序中组织域、控制器和视图。应用程序现在非常小,但它计划变得更大,我想更好地组织文件夹结构和包命名约定。理想情况下,我希望有以下结构,但我相信有更好的方法。我会很高兴地欢迎你们的精彩解决方案

领域

项目

类别

控制器

管理员

公开的

ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
index.gsp
create.gsp
etc
控制器 管理员

公开的

ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
index.gsp
create.gsp
etc
观点

管理员

公开的

ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
ItemController (package = com.example.public, namespace = public)
CategoryController (package = com.example.admin, namespace = public)
index.gsp
create.gsp
etc
现在的问题是 1.这是正确的文件夹结构吗?这可能会造成什么陷阱
2.如何在grails上实现这一点grails是配置框架之上的约定。Grails项目都遵循预定义的文件夹安排,文档中对此进行了详细描述:


创建Grails应用程序时,它会设置默认的Groovy/Java包。当您创建Grails人工制品域、控制器等时,默认情况下会使用这个可以更改的默认包。我曾想过为这些人工制品创建子包,但现在我不这么做。原因如下

Grails为您做了很多事情。这太棒了,因为它消除了很多样板代码,节省了您的时间。您越是坚持这些约定,Grails就可以为您做的事情就越多。这也适用于包装。如果将人工制品保留在默认包中,则可以减少导入语句的数量。这不仅适用于创建人工制品时,也适用于创建单元测试时,它们使用相同的默认包

您对将多个类放入同一个包的担忧是正确的。而且,由于您希望应用程序的大小能够增长,这是一种可能。Grails的解决方案是插件。您可以将应用程序模块化为插件,然后使用主应用程序将所有内容组合在一起。每个插件都有不同的包名称空间

如果希望应用程序及其插件位于同一代码库中,可以在项目中创建一个插件目录作为grails应用程序的同级目录。然后,在plugins目录中创建Grails插件。最后,参考grails app/conf/BuildConfig.groovy中的每个插件