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