如何构建 Javascript 架构以补充 PHP MVC Web 应用程序?

Posted

技术标签:

【中文标题】如何构建 Javascript 架构以补充 PHP MVC Web 应用程序?【英文标题】:How to structure Javascript architecture to complement a PHP MVC web app? 【发布时间】:2010-12-07 21:44:57 【问题描述】:

我正在为 Web 应用迭代开发一种新的 javascript 架构。之前的迭代有很多内联代码,分散的包含,没有 .js 文件的目录结构,所有东西都在全局命名空间中。我的目标是:将脚本包含在页脚中,将所有内容保存在应用程序命名空间/对象中,将组织添加到 .js 文件中,并将所有应用程序特定文件压缩到一个 bundle.js 中

我正在尝试采用基于 Nicholas Zakas 的模块化方法:“Scalable JavaScript Application Architecture”http://www.yuiblog.com/blog/2009/09/17/video-bayjax-sept-09/

网站目前的结构是这样的

/app
 /models
 /views
   /home
   /auth
   /meta
     about.tpl
     contact.tpl
     privacy.tpl
 /controllers
   home.php
   auth.php
   meta.php
 /public
  /js
   core.js
   /modules
     module files here
   /jquery
     jqueryplugins here
   /controllers
     home.js
     auth.js
     meta.js

控制器具有对应于我们的 url 路由和视图呈现的方法。例如http://localhost/meta/contact 将调用“元”控制器上的“联系人”操作并呈现元/联系人模板。

我正在围绕对应用程序全局对象的单个初始化调用来规划 js 架构,将控制器和方法作为参数传递给它,即

localwebapp.init(controller, method);

在设计的这一点上,我在继承和模块实现上苦苦挣扎。一些模块将是全局的并在整个站点中使用,一些模块将通过特定的控制器使用,而一些模块将仅用于控制器操作。 模块是独立的,不会相互通信,它们需要被分配到一个“沙箱”,它们将检查事件触发器

我想我需要沙盒和模块类。控制器脚本基本上是几行模块被分配给沙箱并被初始化。

如果我在这里重新发明***,请告诉我。任何方向都非常感谢。我已经研究过 javascript MVC 框架的工作方式类似于 JavaScriptMVC,但它看起来不是我需要的

【问题讨论】:

你为什么不认为客户端MVC框架不起作用?我听上去很喜欢,而且我在使用它时只获得了很好的体验(包括在客户端的 JavaScript 源代码和在服务器端生成的数据的清晰分离)。 我从 JavaScriptMVC 文档中得到的印象是,该框架是为重型 UI 驱动的网站而设计的,并且可以处理您在 javascript 中使用传统 php MVC 设置所做的所有事情。因为我们已经有了 php 框架,并且从上次迭代中移植了很多功能,所以我不想将所有这些都移到 javascript 中。 【参考方案1】:

我们也使用 JavaScript MVC。您可以在应用程序中同时使用两者。

在我们的例子中,我们的应用程序更多地是前端驱动的,而后端(ZF 和 MVC)是一个 REST API,而 JavaScript MVC 可以很容易地做到这一点。功能集仍然在 PHP 部分,而不是客户端,我们只是利用 JavaScript MVC 的很多部分使其看起来更快捷,等等。

最后,我看不出为什么不能反过来。

我认为对 MVC 中的视图部分的误解是它可以在浏览器中看到。视图也可以是 XML 或 JSON。我相信你知道这一点,但我想强调这部分,因为它让大多数人感到厌烦。

如果您通常询问 JavaScript MVC——我不知道它是否是最好的 MVC 框架(客户端方面),但它会强制您定义模型、控制器,并且它带有一个测试框架来确保事情按计划进行。

如果这有帮助,请告诉我!

【讨论】:

以上是关于如何构建 Javascript 架构以补充 PHP MVC Web 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Memcache 构建 PHP/Javascript 聊天室 [重复]

如何更新您的静态库架构以支持 arm64 构建?

SaltStack实例:构建高可用架构

将 javascript 连接到 php 套接字以与 Flash 通信

如何构建以应用为核心的运维体系

如何对软件架构建模