gpt4 book ai didi

javascript - CakePHP 开发人员试用 JavaScript MV*。感到困惑

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:46:09 24 4
gpt4 key购买 nike

我有几年使用 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* 中,您似乎可以同时拥有多个 Controller 。虽然我有点明白它有它的用处,但我目前的知识太少了,我什至想不出比“它有什么用处?”更好的问题。

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

所以,这个问题的最佳答案是指向一本名为Client-side JavaScript MV* For Dummies (Who only have experience in server-side MVC) 的书的链接,这会让你赚到钱除了常规的 StackOverflow 奖励外,还有大约 500 个互联网。

我将非常感谢任何关于我写得乱七八糟的问题主题的见解(完整链接)。您将获得标准的 +1 作为奖励,作为进一步的奖励,我 promise 将您的昵称写在便利贴上,并在下个月保留在我的显示器上。回答最有帮助的人当然会接受并且还可以提供要打印的图片以及他们的昵称以附在我的显示器上。

最佳答案

我很想知道您在这方面的进展情况。 PHP 是我的初恋,虽然我仍然喜欢这门语言的易用性,但当它明显被更快、更具可扩展性的技术淘汰时,很难真正认真对待它。

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

我觉得javascript中的MVC可以这样想:

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

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

C:功能与 PHP 中的 Controller 几乎相同。

我对你的建议是不要自己编写,而是使用 Backbone.js(很快成为行业标准),从里到外学习它,并可能在它之上构建。

祝你好运!

关于javascript - CakePHP 开发人员试用 JavaScript MV*。感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13726848/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com