【发布时间】:2012-07-24 05:35:46
【问题描述】:
我开始学习淘汰赛 js,并计划构建一个中型应用程序,例如满足 1000 个用户和 1000 个条目的需求。我想知道你们如何为淘汰 js 应用程序构建 js 文件?它就像一个常规的MVC文件结构一样
lib/
应用程序/
应用程序/模型/
应用程序/视图/
应用程序/控制器/
或者你的结构不同?
【问题讨论】:
标签: javascript model-view-controller mvvm knockout.js
我开始学习淘汰赛 js,并计划构建一个中型应用程序,例如满足 1000 个用户和 1000 个条目的需求。我想知道你们如何为淘汰 js 应用程序构建 js 文件?它就像一个常规的MVC文件结构一样
lib/
应用程序/
应用程序/模型/
应用程序/视图/
应用程序/控制器/
或者你的结构不同?
【问题讨论】:
标签: javascript model-view-controller mvvm knockout.js
这似乎是一个非常开放的问题,因为没有“正确”的方式来构建应用程序。此外,不同大小的应用程序将从不同的结构中获得不同的好处。您可能只有几个模型,根本不需要任何文件夹。你需要几个。无论如何,继续我的回答。
由于您专门询问淘汰赛,因此假设您只了解客户端 javascript,而不是您的服务器的代码。如果您谈论的是整个应用程序结构,请在您的问题中澄清这一点。
首先,Knockout 没有控制器。它有 ViewModel。这看起来像是语义上的区别,但实际上并非如此。控制器相对笨拙;他们将视图中的操作路由到模型中的业务逻辑。另一方面,ViewModel 很聪明。它们包含业务逻辑以及视图将使用的公共属性和方法。
模型通常不属于 Knockout 方面的一部分。它们将在您的服务器上,并代表您的数据库表(这是一个概括,显然存在例外)。通过这两种方法,我们消除了controller 和model 目录,并留下了viewmodels 目录。
视图更棘手。视图是您的 HTML,但如果您想重用它们,它们也可以是您的淘汰模板。为了在您的“视图”和“模板”之间保持分离,我将此目录称为templates。
最后,我不会将其中的任何内容放在lib 目录中。您的应用程序本身并不是一个库。它是应用程序。所有这些都应该在您的公共 javascript 文件夹下(因为网络需要访问它),但我看不出有任何理由将它推到树的下方。当然,您需要一个 lib 目录来存放其他插件,但您的 Knockout 应用程序会使用它,因此 lib 应该与您的应用程序处于同一级别。
【讨论】: