需要有关模块化Coldfusion应用程序开发的建议

时间:2010-09-26 23:08:15

标签: coldfusion modularity

我正在开始一个新的应用程序,并希望专注于使其模块化。我的意思是,在我的脑海中,我设想了一些基本设施登录,用户角色,布局等,但我希望能够添加自包含的“功能块”,例如文档存储库和上传,日记和提醒服务......无论如何。

到目前为止我如何布置应用程序只是root中的所有内容,图像和cfcs的单独子文件夹,坚持变量和查询名称的命名约定等,通过cfcs进行所有数据库交互,在顶部进行所有处理的页面,然后是注释行,然后显示/页面布局。

我已经尝试过但未能在各种各样的框架中解决问题,但我只是因为犹豫不决而感到瘫痪,并且对于我是否“正确”这样做感到困惑。是否有一种工作方式可以接受成为一种有用的方法而不涉及整个官方“框架”的事情?

3 个答案:

答案 0 :(得分:2)

然后,您可能希望尽可能地将表示层与核心分开。一个很好的和流行的方法,这是非常快速地提高速度是遵循MVC(模型 - 视图 - 控制器)模式

http://en.wikipedia.org/wiki/Model%E2%80%93View%E2%80%93Controller

这将允许您将功能调整为完全独立于布局等的控制器。然后,控制器可以根据需要更轻松地集成到其他项目中。

我知道你说你不想要框架而且你肯定不需要框架,但我强烈建议它用于更大的应用程序,例如你所描述的。有些人可以拥有如此多的规则,而不是他们似乎在很多方面受到影响。我喜欢的一个基于Ruby on Rails的CFWheel(http://cfwheels.org/)。

它几乎可以帮助你构建东西,你可以自由地遵循“正常”方式,或者它不会真正阻止你。看看这里的截屏视频:http://cfwheels.org/screencasts

答案 1 :(得分:2)

Model Glue是一个优秀的CF框架。谷歌小组支持+文档很棒。

FW / 1是另一个更简单的框架,可以开始学习,目前还不确定文档。

框架绝对是最佳选择。一旦你绕过他们,他们就会觉得“正确”。他们倾向于让你写出更好的代码,并且现在已经使用了coldfusion框架一年左右,我可以诚实地说我永远不会再使用一个8 - )

答案 2 :(得分:1)

老实说,这些框架很容易导致分析瘫痪。你可以很容易地思考问题。这就是你做的,保持简单,只需敲击键盘。使用您自己的“框架”。它可能不是很漂亮,但你最终会得到它,你会明白为什么其他框架存在。

以下是您的开始:

创建文件夹布局和视图。将所有页面布局内容放在布局文件夹中(您可能只有几个,甚至可能只有一个布局)!将所有视图内容放在views文件夹中(这可能看起来像你一直在做的一堆文件不是很好组织)。关键是您不会在视图文件中处理任何页面处理“页面顶部”代码。

您的index.cfm将是唯一的.cfm根目录。使用URL变量“event”= action来使您的框架运行。

在index.cfm中,使用巨型cfswitch来确定要执行的“页面顶部”代码(这将是一个巨大的“控制器”)。

mysite.com/index.cfm?event=contactInfo

<cfswitch expression="#url.event#">
  <cfcase value="contactInfo">
    <top of page code>
    <cfset structLayoutInfo["pagetitle"] = "XYZ Contact Info" />
    <cfmodule template="/layouts/mainlayout.cfm" attributeCollection="#structLayoutInfo# >
      <cfinclude template="/views/contactInfo.cfm"/>
    </cfmodule>
   </cfcase>
  .....
</cfswitch>

将此与cfmodule标记结合使用以加载您的布局。因此,您的所有页面请求都通过index.cfm进入。 Index.cfm将执行所有页面顶部的内容,然后对views文件夹中的相应视图执行cfinclude。使用cfmodule标记加载您的布局(查看标题和页脚的tag.execution模式)。

您将继续添加功能并向框架添加功能。您可能会将index.cfm代码移动到一个控制器文件夹,其中包含一组调用数据库CFC的CFC。