【问题标题】:What is the correct file structure for knockout js application? [closed]淘汰 js 应用程序的正确文件结构是什么? [关闭]
【发布时间】:2012-07-24 05:35:46
【问题描述】:

我开始学习淘汰赛 js,并计划构建一个中型应用程序,例如满足 1000 个用户和 1000 个条目的需求。我想知道你们如何为淘汰 js 应用程序构建 js 文件?它就像一个常规的MVC文件结构一样

lib/

应用程序/

应用程序/模型/

应用程序/视图/

应用程序/控制器/

或者你的结构不同?

【问题讨论】:

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


    【解决方案1】:

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

    由于您专门询问淘汰赛,因此假设您只了解客户端 javascript,而不是您的服务器的代码。如果您谈论的是整个应用程序结构,请在您的问题中澄清这一点。

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

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

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

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

    【讨论】:

    • 我将 jquery、knockout 和其他依赖项放在 lib 文件夹中,我的逻辑在模型文件夹中。那样可以么?另外,html文件是视图吗?
    • "OK" 是相对的。如果它对您有用,并让您保持井井有条,那么它可能没问题。您的 HTML 文件的去向实际上取决于您拥有的服务器设置类型。我无法回答。
    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 2019-12-25
    • 2016-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-07
    • 2016-04-07
    • 2020-04-19
    相关资源
    最近更新 更多