【发布时间】: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 中。
标签: javascript model-view-controller architecture