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