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

在不同文件中构造knockout.js应用程序,knockout.js,knockout-3.0,knockout-3.2,Knockout.js,Knockout 3.0,Knockout 3.2,我一直在关注Knockout.js,没有找到多少关于如何正确构造Knockout应用程序的文档 在这些页面或其他页面中很容易理解及其多个示例,但是关于文件结构的良好实践却没有多少 我见过Steve Sanderson谈论如何设计一个大项目,但他们似乎对我有点过分了。他提到要生成一个基本的KO结构,但我正在使用Node.js和Express.js,我已经有了另一个正在使用的结构,我不太确定如何将两者混合使用 目前我拥有的是3个主要文件: functions.js viewmodels.js(ko

我一直在关注Knockout.js,没有找到多少关于如何正确构造Knockout应用程序的文档

在这些页面或其他页面中很容易理解及其多个示例,但是关于文件结构的良好实践却没有多少

我见过Steve Sanderson谈论如何设计一个大项目,但他们似乎对我有点过分了。他提到要生成一个基本的KO结构,但我正在使用Node.js和Express.js,我已经有了另一个正在使用的结构,我不太确定如何将两者混合使用

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

  • functions.js
  • viewmodels.js(ko viewmodels和域类)
  • events.js(用于jQuery事件)
如您所见,
viewmodels.js
文件将变得越来越大,因此我考虑将每个viewmodel与其关联的域类分离到不同的文件中

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

我目前正在使用一个主模型:

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

var mm = new MasterModel();
ko.applyBindings(mm);
因此,我可以从
departmentViewModel


关于结构问题有什么建议吗?

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

如果视图模型越来越大,继承是一个不错的选择

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

关于良好实践,这是非常好的。它包含了几篇关于ko组件和许多其他内容的文章

希望这有帮助