4

我有几年使用 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 奖励,作为进一步的激励,我承诺将您的昵称写在便利贴上,并在下个月将其保留在我的显示器上。回答最有帮助的人当然会被接受,另外还可以提供一张图片,打印在他们的昵称旁边,以附加到我的显示器上。

4

1 回答 1

0

我很想知道你最后在哪里。PHP 是我的初恋,虽然我仍然喜欢这门语言的易用性,但当它明显被淘汰以寻求更快、更具可扩展性的技术时,我很难真正认真对待它。

javascript 的异步性使事情变得复杂,但它确实为提高性能打开了大门。有相当多的库(更多用于 node.js,而不是客户端工作)旨在使 javascript 编写得好像它是同步的 - 我再次认为它对您当前的问题没有帮助,但很高兴知道其他人分享您的痛苦.

我认为 javascript 中的 MVC 可以这样想:

M:模型只是对你的数据的解释。所以如果你有一个人,你可以说每个人都有一个字符串的名字,一个整数的年龄等等。现在,每当您创建一个新人时,您都可以进行验证。我发现,客户端模型往往非常简单。

V:观点是另一个有趣的东西。有些人喜欢拥有一大组包含 HTML (ew) 字符串的渲染函数。其他人喜欢让视图只是像handlebars.js这样的模板引擎的包装器(可能是更好的解决方案)。

C:功能与 PHP 中的控制器几乎相同。

我对您的建议是不要自己编写,而是采用 Backbone.js(很快成为行业标准),从内到外学习它,也许在它之上构建。

祝你好运!

于 2013-03-27T20:01:45.263 回答