当前位置: 首页 > 知识库问答 >
问题:

使用应用程序范围的UDF扩展ColdFusion

颛孙高义
2023-03-14

我一直在探索构建我的ColdFusion应用程序的不同方法,我正在寻找一些关于提供应用范围UDF的最佳方式的意见。

对于我的每一个应用程序,我通常都会使用一些不属于任何特定对象的额外功能。主要是数据操作。我希望这些功能在我的整个应用程序中都可用,既可以在CFM模板中使用,也可以在应用程序实例化的CFC中使用。

在我看来,有各种各样的方法来实现这一点,但它们都有自己的局限性:

>

创建一个基本的Utils CFC,并使每一个其他CFC扩展此功能。这工作正常,这意味着CFC可以直接从CFC的This作用域引用Utils函数——然而,这意味着Utils函数被保存在每个CFC的内存中。它在概念上也不正确,因为我的其他CFC与Utils CFC没有关系。

将我的基本Utils CFC注入我的其他CFC。我一直在使用的另一种方法是在应用程序范围内实例化我的基本Utils CFC,然后将其作为对象传递给我的其他CFC中的参数。这在概念上和封装上都适用于我。与我在init方法中设置数据源的方式相同,我可以对UDF进行同样的设置。这与每个CFC中都包含UDF的问题相同。当我转储所有CFC时,我会多次获得每个UDF——然而,当我传递一个实例化的对象时,我假设它不会占用任何额外的内存空间。如果有人能证实这一点,那将很有帮助——我只是假设!这种方法唯一的真正问题是它看起来有点复杂。

让我的应用程序CFC扩展我的Utils CFC。这似乎是很多框架所做的。我没有使用过这种方法,但我确信有优点也有缺点。

cf1直接在应用程序中包含来自单独模板的自定义项。cfc这在功能上类似于在应用范围内实例化。

将我的UDF添加到服务器的Components.cfc这在理论上是一个很好的想法-我可以维护一个基本Utils的副本,并确保服务器上的所有内容都可以访问它们-但是,如果我想在多个服务器上运行应用程序,那么它们都需要这些功能。另外,服务器的任何更新都可能覆盖组件。这只是感觉就像黑客攻击核心-我相信我们都可以从痛苦的经历中证明,这是不好的。

所以,我的问题是:以优雅且可重用的方式使用UDF扩展CF的最佳实践是什么?上面有没有我没想到的选择?

共有1个答案

茹航
2023-03-14

如果你真的关心结构和保持事物的独立性,甚至不要从扩展功能的单例或继承开始。相反,通过在运行时/请求时添加非组件库来扩展ColdFusion中的基本功能,请参阅ColdFusion开发者指南。这并不能神奇地解决所有问题,但至少这是实现通用功能的正确方法。

 类似资料:
  • 我正在做一个项目,该项目将有许多JavaFX应用程序,这些应用程序具有相似但又足够不同的功能,因此我创建了一个抽象基类来扩展Application以处理常见的功能并指示它们需要做什么,还创建了一系列具体的类来扩展这些功能。然而,当我试图跑的时候,我得到 应用程序构造函数java.lang.Reflect.InvocationTargetException位于java.base/jdk.intern

  • Node.js以单线程模式运行,但它使用事件驱动的范例来处理并发。 它还有助于创建子进程,以便在基于多核CPU的系统上利用并行处理。 子进程总是有三个流child.stdin , child.stdout和child.stderr ,它们可以与父进程的stdio流共享。 Node提供了child_process模块,该模块具有以下三种创建子进程的主要方法。 exec - child_process

  • 问题内容: 我有一个用Swift编写的应用程序(简称MyApp),其目标如下: :主要目标 :一个目标,用于为应用及其扩展程序(主要是API后端和数据库处理)之间共享的代码构建框架 :使用框架的Today View小部件(或现在称为的小部件)。 该框架链接到使用它的每个目标,即和。输入Cocoapods:我以前具有以下Podfile结构: 这里的目的是仅将框架公开给其他部分,而不是将其所有pod

  • 目的 使用部署配置来部署多个 Pod,并以此扩展缩放应用。 环境 openshift v3.11.16/kubernetes v1.11.0 步骤 创建工程1. CLI 登录到 OCP $ oc login https://master.example.com:8443 -u admin -p admin2. 创建工程 $ oc new-project lab08 创建一个新应用,测试缩放1. 创

  • 问题内容: 我正在用Firebase构建Web应用程序,昨天他们发布了具有所有出色新功能的扩展程序。但是,“分析”部分现在仅适用于Android和IOS应用程序,但是我需要像以前一样检查Web应用程序的常规性能和数据使用情况。有没有办法查看这些统计信息,以防止我的应用程序超出限制时被关闭? 问题答案: Google Analytics for Firebase是一种新的分析产品,用于跟踪移动和We

  • 我正在Django上做类似ERP的小项目,其中包含不同的应用程序(产品、销售、采购、会计、MRP、...)。其中一些有依赖关系(例如,销售应用程序需要产品应用程序)。 继承或抽象类似乎也是不合适的,因为我不是试图为子产品创建模型,而是在表中现有信息(条目)的基础上进行增长或扩展。 实现这一点的最佳方法是什么?我应该考虑编写自定义迁移操作吗?否则,还有更好的办法吗?谢谢!