结构knockout.js应用程序在不同的文件中

时间:2015-08-13 12:51:19

标签: knockout.js knockout-3.0 knockout-3.2

我正在盯着Knockout.js而且我没有找到关于如何正确构建淘汰赛应用程序的文档。

很容易关注tutorial from the docs及其中的多个示例或其他页面,但关于文件结构的良好做法并不多。

我已经看到史蒂夫桑德森的some videos谈论如何建立一个大项目,但他们似乎有点太过分了。他提到the Yeoman tool生成一个基本的KO结构,但是我使用Node.js和Express.js,我已经有了另一个我正在使用的结构,我不太确定关于如何混合两者。

我目前拥有的是3个主要文件:

  • functions.js
  • viewmodels.js(ko viewmodels和domain classes)
  • events.js(用于jQuery事件)

正如您所看到的,viewmodels.js文件将变得越来越大,因此我考虑将每个视图模型与其在不同文件中的关联域类分开。

我发现的问题是我的一些视图模型彼此相关,因为它们必须在某个时刻访问彼此的数据。

我现在正在使用mastermodel:

var MasterModel = function(){
    this.user = new UserViewModel();
    this.department = new DepartmentViewModel();
}

var mm = new MasterModel();
ko.applyBindings(mm);

所以我可以从mm.user.sayHi()

执行departmentViewModel之类的操作

有关结构问题的任何建议吗?

1 个答案:

答案 0 :(得分:1)

好吧,Yeoman工具使用CrossRoadsJS和RequireJS生成单页面应用程序结构。由于您使用的是ExpressJS,我认为Yeoman结构不适合您的情况。

如果您的视图模型越来越大,继承就是不错的选择。

看看这个article,它非常好,并教授如何进行javascript继承,包括私有和公共方法和属性。您可以使用它来创建强大且可重用的视图模型。

关于良好做法,这blog非常好。它包含几篇关于ko组件和许多其他内容的文章。

希望这有帮助!