【发布时间】:2012-12-05 15:38:30
【问题描述】:
我在使用 CakePHP 的服务器端 MVC 应用程序开发方面有几年的经验,并且在使用 vanilla PHP 方面有更多经验。遗憾的是,我不能对 JS 应用说同样的话,尽管我确实有使用 Mootools 为静态页面增添趣味的经验。
所以现在我正在尝试研究客户端应用程序构建,但到目前为止我的成功并没有那么好。由于我接触过的唯一 MVC 是 CakePHP,每个 JS MV* 框架充其量似乎都难以理解。我已经习惯于编写整洁的 CakePHP 和 Mootools 类代码,以至于大块的 JS 代码显得杂乱无章,这完全没有帮助。
我什至尝试通过模仿 CakePHP 来编写我自己的简单的类似 MVC 的库,主要用于学术用途。我想不用说我还没有真正得到它。
我在学习和编写自己的 MVC 时意识到的一些事情:
- Js 是异步的。 CakePHP 以它的方式工作,因为 PHP 是同步的。在 JS 中,需要以不同方式实现的事情是无穷无尽的,而由于异步,可以以不同方式完成的事情也有很多。服务器端 MVC(或它的 CakePHP 实现)和客户端 MV* 之间最重要的区别是什么?
- 我仍然不太了解客户端模型的概念。在 Cake 中,它们处理数据验证和数据库连接。另一方面,客户端是一个不安全的环境,所以客户端模型只能做基本的数据过滤、预验证和默认值。我在这里完全错了吗?
- 某些应用程序需要服务器对应项。 Server 也应该是 MVC 吗?
- 似乎在客户端 MV* 中您可以同时拥有多个控制器。虽然我有点理解它有它的用途,但我目前的知识太少了,我什至想不出比“它有什么用处?”更好的问题。
我还下载了TodoMVC 并尝试检查不同的框架,但收效甚微。它的主要问题是它只是单页(动作发生在不同的 url,但布局保持不变)并且实现是如此不同,以至于我什至很难理解基础知识,更不用说找到最适合的框架为了我。此外,它不以任何方式与服务器通信,这令人非常失望,因为我想看看不同的框架是如何做到这一点的。
因此,此问题的最佳答案是指向一本书的链接,该书名为Client-side JavaScript MV* For Dummies(仅具有服务器端 MVC 经验),这将使您获得除了常规的 StackOverflow 奖励外,大约 500 个互联网。
我会非常感谢任何关于我漫无边际的书面问题主题的见解(完整链接)。您将获得标准的 +1 奖励,作为进一步的激励,我承诺将您的昵称写在便利贴上,并在下个月将其保留在我的显示器上。回答最有帮助的人当然会得到接受,另外还可以提供一张图片,打印在他们的昵称旁边,附在我的显示器上。
【问题讨论】:
-
我正在继续我自己的 MVC 项目。我弄清楚了客户端 MVC 的大部分工作原理,尽管模型层对我来说仍然有点模糊,因为直接 db 查询到服务器是不可能的。换句话说,客户端模型与服务器模型的行为如此不同,以至于我很难决定实现的范围应该有多大以及要遵循什么示例。
标签: javascript model-view-controller mvvm mvp