Jos*_*ody 7 coldfusion code-reuse design-patterns master-pages
我正在开发一个用ColdFusion编码的网站.我有一个CSS/HTML模板我想应用于每个页面的内容,而不需要复制任何超过必要的代码.我已经被ASP.NET的母版所破坏了,这将是我实现这个网站的首选方式.不幸的是,我无法使用该选项.这个网站必须在Coldfusion MX 7上运行.此外,领导该项目的开发人员不喜欢Fusebox,因此该选项已经完成.
每个页面上的主导航,图形页眉和页脚都是相同的.标题标签,元标记和二级导航可能因页面而异.除此之外,只有页面的"主要内容区域"会有所不同.
鉴于这些参数,我如何编码网站以获得最大的可维护性?
Pet*_*ton 12
使用ColdFusion有很多方法可以做到这一点.
Application.cfc在每个请求上执行,并且有两个方法(onRequestStart和onRequestEnd),可用于在页面中为主脚本添加/附加内容.
另外值得注意的是,可以扩展/继承Application.cfc,从而允许更复杂的RequestStart/End事件集.更多细节在这里和这里.
自定义标签允许您创建一个标签,您可以围绕每个模板来应用布局/等.它还允许属性/ etc定义常见但不断变化的文本.
例如:
<cf_page PageTitle="My Page">
[main page content]
</cf_page>
Run Code Online (Sandbox Code Playgroud)
在自定义标记(page.cfm)中,您有:
<cfif ThisTag.ExecutionMode EQ 'start'>
<cfparam name="Attributes.PageTitle" default=""/>
<cfcontent reset/><cfoutput><!DOCTYPE html>
<html>
<head>
<title>My Website - #Attributes.PageTitle</title>
[styles and scripts and stuff]
</head>
<body>
<div id="heading">
<img src="my_website_logo.png" alt="My Website"/>
</div>
<ul id="mainmenu" class="nav">
[menu]
</ul>
<h1>#Attribute.PageTitle#</h1>
</cfoutput>
<cfelse>
<cfoutput>
<div id="footer">
[footer]
</div>
</body></html></cfoutput>
</cfif>
Run Code Online (Sandbox Code Playgroud)
当然,您可以创建多个自定义标记,也可以根据指定的属性以多种方式工作.
Henry已经提到过MVC 框架,但是您不需要使用MVC来使用模板/布局功能.
Fusebox可以做MVC,但它不要求你这样做,无论如何FB的ContentVariables是一个很好的工具来实现模块化内容 - 除非你的首席开发人员可以证明他不喜欢Fusebox(并建议一个更适合你的项目的替代品) !)然后绝对没有理由不去实现它 - 它是一个成熟且众所周知的框架,易于使用,有大量开发人员等等.
但是,如果Fusebox真的不是一个选项,请看看Charlie Arehart的框架列表 - 该页面通常是一个值得关注的大量工具列表.
无论如何,这应该给你足够的东西来考虑...
| 归档时间: |
|
| 查看次数: |
1525 次 |
| 最近记录: |