CakePHP开发人员试用JavaScript MV *。迷茫

时间:2012-12-05 15:38:31

标签: javascript model-view-controller mvvm mvp

我有几年的背景,使用CakePHP进行服务器端MVC应用程序开发,还有一些使用vanilla PHP。遗憾的是,我不能对JS应用程序说同样的话,尽管我确实有使用Mootools调整静态页面的经验。

所以现在我正在尝试研究客户端应用程序构建,到目前为止我的成功并不是那么好。由于我所触及的唯一MVC是CakePHP,因此每个JS MV *框架充其量都是不可理解的。它完全没有帮助,我已经习惯于编写整齐的CakePHP和Mootools类代码,大块JS代码感觉无序。

我甚至试图通过模仿CakePHP来编写我自己的简单的类似MVC的lib,主要用于学术用途。我想不用说我没有真正得到它。

我在学习和编写自己的MVC时意识到的一些事情:

  • Js是异步的。 CakePHP以它的方式工作,因为PHP是同步的。在JS中,有一系列需要以不同方式实现的事情,以及由于异步而可以以不同方式完成的事情列表。服务器端MVC(或CakePHP实现)与客户端MV *之间最重要的区别是什么?
  • 我仍然不太了解客户端模型的概念。在Cake中,它们处理数据验证和数据库连接。另一方面,客户端是一个不安全的环境,因此客户端模型只能进行基本的数据过滤,预验证和默认值。我在这里完全错了吗?
  • 某些应用需要服务器对应。服务器也应该是MVC吗?
  • 似乎在客户端MV *中你可以同时拥有多个控制器。虽然我有点明白它有它的用途,但我的知识在这一点上是如此之少,我甚至无法想到一个更好的问题,而不是“它做了什么好事?”

我还下载了TodoMVC,并尝试检查不同的框架,但收效甚微。它的主要问题是它只是单页(动作发生在不同的URL但布局保持不变),实现是如此不同,以至于我很难理解基础知识,更不用说找到最合适的框架了为了我。此外,它不以任何方式与服务器通信,这是一个巨大的失望,因为我想看看不同的框架是如何做到的。

因此,这个问题的最佳答案是链接到一本名为客户端JavaScript MV * For Dummies(谁只有服务器端MVC经验)的书,这将为您赢得除了常规的StackOverflow奖励之外,还有大约500个互联网。

我非常感谢任何关于我任何漫无边际写的问题主题的见解(全部链接)。您将获得标准+ 1s奖励,作为进一步奖励,我保证会在便利贴上写下您的昵称,并将其保存在我的显示器上,以备下个月使用。有帮助的人当然得到一个接受,另外还可以提供一张沿着他们的昵称打印的图片,以便附在我的显示器上。

1 个答案:

答案 0 :(得分:0)

我很想知道你最终在哪一方面。 PHP是我的初恋,虽然我仍然喜欢这种语言的简易性,但是当它被明确地逐步淘汰以获得更快,更具可扩展性的技术时,很难真正认真对待它。

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

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

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

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

C:与PHP中的控制器几乎完全相同。

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

祝你好运!