我们正在运行ColdFusion MX7。
我们遇到的一个问题是,我们在很多页面中都使用了很多函数。让它们生活在'Global'ColdFusion范围内而不是将它们包含在我们的所有页面中会很好。
有没有办法不涉及自定义标签等?
我知道我们可以将一些对象附加到Application或Server范围,但是我们必须这样引用它们。
简单地将它们添加到全球范围将是完美的。
修改的
感谢您的建议,以下是我提出的建议。基本上,对于OnRequestStart函数中的每个请求,在客户端作用域中为函数引用(this.functionName)分配一个正确命名的变量。
的Application.cfc:
<cfcomponent OUTPUT="FALSE">
<cfset This.name = "MyApp">
<CFSET This.clientManagement = true>
<CFSET This.SessionManagement = true>
<CFFUNCTION NAME="Coalesce" OUTPUT="FALSE" access="public">
<CFARGUMENT NAME="ARG1">
<CFARGUMENT NAME="ARG2">
<CFIF ARG1 NEQ "">
<CFRETURN ARG1>
<CFELSE>
<CFRETURN ARG2>
</CFIF>
</CFFUNCTION>
<cffunction name="onRequestStart">
<CFSET CLIENT.COALESCE = this.COALESCE>
</cffunction>
</cfcomponent>
此应用程序下的页面愉快地响应了呼叫:
<CFOUTPUT>#COALESCE("ONE","TWO")#</CFOUTPUT>
效果很好!
答案 0 :(得分:6)
没有“全球范围”这样的东西。
如果您在每个页面中讨论变量范围,可以尝试在Application.cfm中包含UDF。
如果您使用Application.cfc,请在CF7文档中查找onRequest()。
答案 1 :(得分:2)
我满意的一个选项是在Application.cfc中创建服务(或类似命名的)组件。将所有函数添加到此组件,并在创建应用程序时创建它。这将改善加载时间,因为函数缓存在应用程序中,并且还使该函数可以访问该应用程序中的任何文件。当然,您需要调用application.services.myUsefulFunction()
之类的函数答案 2 :(得分:2)
查看此类似帖子。它对我来说很有用......