有没有knockoutjs页面/路由框架?

来自asp.net MVC 3.在MVC4中,他们介绍了WebAPI的。 能够在javascript中执行所有视图/路由代码并仅依赖于MVC for API会很好。 这真的很酷,webapi可以独立于IIS运行!

话虽如此:

有没有任何页面框架,可以利用KnockoutJS类似于我的模拟如下:

Framework.RegisterRoutes(..,mainViewModel);//sets the CurrentViewModel? 

每个路由都是一个viewModel的独立文件,以及一个要注入主视图的视图

 var mainviewModel= function(){ var self = this; self.CurrentViewModel = ko.observable(); ... return self; } <div id="mainPageContent" data-bind:'html:CurrentViewModel.Render'> </div> 

我知道很多这可以通过自己来实现,但不知道如何实现注册路线/加载单独的文件

我觉得knockoutjs的主要优点是不会干扰你编写js的方式(即只要交互对象是可观察的,就build立一个你想要的对象/框架)

Pager.js是专为与Knockout.js一起使用而构build的URL路由框架。 确保你浏览整个Demo ,看看它的全部function和灵活性。 恕我直言,它远远超过PathJS和Sammy。

Sammy.js是一个优秀的轻量级路由JavaScript库。 你可以做这样的事情路线时使用成对Knockout(从教程网站或KnockoutJS):

 $.sammy(function() { this.get('#:folder', function() { self.chosenFolderId(this.params.folder); self.chosenMailData(null); $.get("/mail", { folder: this.params.folder }, self.chosenFolderData); }); this.get('#:folder/:mailId', function() { self.chosenFolderId(this.params.folder); self.chosenFolderData(null); $.get("/mail", { mailId: this.params.mailId }, self.chosenMailData); }); this.get('', function() { this.app.runRoute('get', '#Inbox'); }); }).run(); 

另一个select是使用SproutCore,但它比nav更多,所以我不推荐这个路线,除非你想要所有的SproutCore。 还有很多其他的库,但是由于它的轻量级,我喜欢Sammy.js。

我已经用了一些成功的PathJs ,还有一个更像是一个框架的Sammy 。 这些都不是具体的。

更重量级但KO优化的解决scheme将是Knockback 。

希望这可以帮助。

我想借助ko-component-router将自己的帽子投入到未来的Google员工/ SOers中。

国际海事组织的API比Pager.js简洁得多,而且已经明确地为KOdevise,它已经build立在像可观察的路线和查询string参数的好东西。

最重要的是,它被积极维护,并将继续为可预见的未来。

免责声明 :我是这个软件包的开发者。

老问题,但参考Durandal是一个优秀的淘汰赛SPA框架:

http://durandaljs.com/documentation/Introduction/

我只是开源了我与Knockout放在一起的mini SPA框架。

knockout-spa一个迷你(但是function全面)的SPA框架,build立在Knockout,Require,Director,Sugar之上。 https://github.com/onlyurei/knockout-spa

现场演示: http //knockout-spa.mybluemix.net

特征

  • 路由(基于Flatiron的Director):HTML5的历史(pushState)或散列。
  • 高度可组合和可重用:在特定于页面的JS中为页面select模块/组件,并且它们将自动连接到页面的HTML模板
  • SEO准备好了(prerender.io)
  • 快速和轻量级(85 KB的JS缩小和gizpped)
  • 用于生产JS的两层bundle构build:大多数页面将使用的通用模块,以及将被延迟加载的页面特定模块
  • 有组织的文件夹结构,以帮助您保持理智组织和重用JS,CSS,HTML
  • 使用Knockout 3.3.0+如此准备好了淘汰网站组件和自定义标签的风味( http://knockoutjs.com/documentation/component-overview.html
  • 所有的文档都在主要的依赖关系的自己的主页中,所以你不需要完全学习一个新的框架