knockout js应用程序的正确文件结构是什么?

时间:2012-07-25 17:49:54

标签: javascript model-view-controller mvvm knockout.js

我开始学习淘汰赛js,我打算建立一个中等规模的应用程序,如迎合1000个用户和1000个条目。我想知道你们如何构建淘汰js应用程序的js文件?它就像传统的MVC文件结构,如

LIB /

应用程序/

应用程序/模型/

应用程序/视图/

应用程序/控制器/

或者你的结构不同?

1 个答案:

答案 0 :(得分:3)

这似乎是一个非常开放的问题,因为没有“正确”的方式来构建应用程序。此外,不同尺寸的应用将从不同的结构中获得不同的好处。您可能只有几个型号,根本不需要任何文件夹。你需要几个。无论如何,我的回答。

由于你特别询问淘汰赛,这假设你只是在接受客户端的javascript,而不是服务器的代码。如果您正在讨论整个申请结构,请在您的问题中澄清这一点。

首先,Knockout没有控制器。它有ViewModels。这似乎是一种语义上的区别,但实际上并非如此。控制器相对愚蠢;他们将动作从视图路由到模型中的业务逻辑。另一方面,ViewModels很聪明;它们包含业务逻辑以及视图将使用的公共属性和方法。

模型通常不是Knockout方面的一部分。它们将在您的服务器上,并代表您的数据库表(这是一个概括,显然存在异常)。通过这两种方法,我们删除了controllermodel目录,并留下了viewmodels目录。

观点比较棘手。视图是您的HTML,但如果您想重用它们,它们也可以作为您的淘汰模板。为了在“视图”和“模板”之间保持分离,我将此目录称为templates

最后,我不会将任何内容放在lib目录中。您的应用程序本身不是库。这是应用程序。所有这些都应该在你的公共javascript文件夹下(因为web需要访问它),但我没有看到任何理由将它推到树下。当然,您需要一个lib目录用于其他插件,但它将由您的Knockout应用程序使用,因此lib应该与您的应用程序处于同一级别。