您是通过选择的 MVC 框架还是直接向 CFC 发出 ajax 请求?
我倾向于绕过 MVC,因为我不需要来自 ajax 请求的“视图”。
通过 MVC 框架(如 Coldbox)路由 ajax 调用的优点是什么?
更新:找到此页面http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/cbAjaxHints但我仍在努力思考它带来的复杂性带来的好处......
您是通过选择的 MVC 框架还是直接向 CFC 发出 ajax 请求?
我倾向于绕过 MVC,因为我不需要来自 ajax 请求的“视图”。
通过 MVC 框架(如 Coldbox)路由 ajax 调用的优点是什么?
更新:找到此页面http://ortus.svnrepository.com/coldbox/trac.cgi/wiki/cbAjaxHints但我仍在努力思考它带来的复杂性带来的好处......
ColdBox 的创建者 Luis Majano说:
这是ajax交互亨利的两个流派。
我更喜欢代理方法,因为它添加了以下内容:
- 调试
- 在调试器中跟踪
- AOP 拦截点
- 安全
- 设置可用性
- 代理将中继到事件模型,因此我可以使用本地拦截点、本地 AOP、插件等。
换句话说,它可以是一个高度监控的调用,而不是一个简单的服务 cfc 调用,您仍然可以这样做。
一方面,我喜欢让我的执行分析器运行(冷箱调试器的一部分),这样我就可以看到 ajax 请求何时进入以及何时出现。我可以看到请求的数据和发回的数据。我不必查看日志文件,也不必尝试想象结果或问题。它确实有助于调试。
但是,您决定采用哪种方式将是开发人员的选择。我个人的偏好是始终使用我的代理进行事件委托,因为它给了我更多的灵活性、调试和安心。
亨利,我向我的模型的代理对象发出 Ajax 请求。通常,这样做时我在“框架”之外。话虽如此,可能(非常)有必要利用您的框架,例如在设置的安全模型中工作。
我真的看不出绕过 MVC 框架有什么好处——结合起来,这三个元素就是你的应用程序。
您的 ajax 元素确实是视图的一部分。正如 Luca 所说,视图输出模型和控制器的结果。
这么看——如果你做了一个 iPhone 友好的 web 界面(也就是一个新的 View),你会绕过模型和控制器吗?
MVC 框架中“视图”的目的是在“模型”和“控制器”生成数据之后显示数据。如果你不需要“视图”,那么使用这样的设计模式有什么意义呢?
我同意卢卡。它还绕过了 MC 堆栈中的任何类型的清理和过滤逻辑。它基本上否定了您可能拥有或未实施的任何类型的查询处理。
是的,我不会绕过你的框架,找出导致你悲伤的原因并寻找有问题的部分,添加逻辑以排除页眉或页脚等常见组件,并寻找注入空白的方法,虽然这对 html 来说很好,但很烦人或下降解析json时有问题。
添加 output="false" 特别是在您的 application.cfc 和它的方法将是我清理的第一件事。
我坚信从不直接直接访问 CFC,我发现当一个主要的重构可能想要整合或消除组件时,它会产生长期问题,直接访问可能会使这比它应该的更难,特别是如果第三方是从另一个域(例如闪存远程处理)中访问您的 ajax。
+1 史蒂夫的回答。