我即将启动一个白标服务器端应用程序,但我不想跳入并开始编码。这是我以前不必做的事情,至少不是从头开始,这次我是控制者!
我已经研究过许多应用程序,无论好坏,但在大多数情况下,我总是注意到从架构的角度来看,应用程序背后缺乏思想,最终会让我们感到困惑。这不是任何人的反映,大多数时候我们受到打电话的业务的约束。总之...
我决定使用mysql来使用Railo,Coldbox和AngularJs。但这不是讨论的重点,更多的是一个FYI。
我正在寻求帮助的是如何设计网站以便我能够保存核心和自定义代码(我将其称为客户端代码)。是的,我研究过这个问题很遗憾没有多少关于如何处理这个问题的讨论。
这是什么意思?我想要一个站点的基本shell,其中一组代码文件可以被多个客户端使用,例如,将执行注册,公司详细信息,登录,语言设置等的模块。但是,每个客户端总是有请求对于自定义,所以我希望能够使用客户端代码覆盖核心代码。
我对Coldbox基础知识(即一个代码库一个站点)有很好的了解,但还不足以实现我的目标。
这是Coldbox App的基本结构,这就是我看到客户端目录结构的方式。
+ ApplicationRoot
| --- + config
| --- +框架
| --- +处理程序
| --- +插件
| --- +布局
| --- + views
| --- +包括
| --- +拦截器
| --- +型号
| --- +模块
| --- + Application.cfc
| --- + index.cfm
如果以上是一个客户端应用程序的基本结构,它将如何扩展到核心代码?请记住,我认为核心代码将包含模块的dao,service,gateway,bean。它们将在哪里存在,并且核心代码在其他文件夹中是否具有类似的结构?
+ ApplicationRoot
| --- +核心代码
| ----- +框架
| ----- +插件
| ----- +拦截器
| ----- + views
| ----- +型号
| ----- + modules
--- +客户一
| ----- +按照上述客户端目录结构
--- +客户二
| ----- +按照上述客户端目录结构
感谢您抽出时间阅读本文,希望您能指引我朝正确的方向前进。
答案 0 :(得分:2)
您需要的是常见ColdBox对象的文件夹,即将在客户端之间共享的文件夹。您可以在ColdBox.cfc
中configure these locations。
coldbox = {
// .. settings above
//Extension Points
UDFLibraryFile = "includes/helpers/ApplicationHelper.cfm",
coldboxExtensionsLocation = "",
modulesExternalLocation = ["/common/modules/"],
pluginsExternalLocation = "",
viewsExternalLocation = "",
layoutsExternalLocation = "",
handlersExternalLocation = "",
requestContextDecorator = "",
// .. more settings below
};
您的网络根目录可能如下所示:
- clientA
- skeleton
- clientB
- skeleton
- clientN
- skeleton
- common
- extensions
- handlers
- layouts
- modules
- plugins
- requestContextDecorator
- views
您也可以override layouts and views使用标准的ColdBox约定,但不会出现在AngularJS代码中吗?
至于重写处理程序操作,这是可能的。我的公司有一个自定义流程,但我们尚未开源。
希望这有帮助。