是否有任何kn​​ockoutjs页面/路由框架?

时间:2012-03-14 15:38:29

标签: knockout.js javascript-framework

来自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>

我知道很多这可以通过self实现,但不确定如何实现寄存器路由/加载单独的文件

我觉得knockoutjs的主要优势是能够不干涉你编码js的方式(即只要可以观察到相互作用的对象,就可以按照你想要的方式构建一个对象/框架)

6 个答案:

答案 0 :(得分:45)

Pager.js是专为与Knockout.js一起使用而构建的URL路由框架。确保您浏览整个Demo以了解其全部功能和灵活性。恕我直言,它远远超过了PathJS和Sammy。

答案 1 :(得分:20)

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();  

另一个选择是使用SproutCore,但它远远超过nav,所以除非你想要所有的SproutCore,否则我不推荐这条路线。还有很多其他的库,但到目前为止我喜欢Sammy.js,因为它的重量很轻。

答案 2 :(得分:8)

我想通过ko-component-router向未来的Google员工/ SOers投降。

IMO API比Pager.js简洁得多,并且已经为KO明确设计,它内置了可观察路线和物流等物品。查询字符串参数。

最重要的是,它会得到积极维护,并且在可预见的未来仍将如此。

免责声明:我是此套餐的开发者。

答案 3 :(得分:3)

我已经使用PathJs取得了一些成功,还有Sammy这更像是一个框架。这些都不是特定于KO的。

更重量级但KO优化的解决方案是Knockback

希望这有帮助。

答案 4 :(得分:2)

较早的问题,但作为参考,Durandal是Knockout的优秀SPA框架:

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

答案 5 :(得分:1)

我只是开源了我将Knockout作为主要组件放在一起的迷你SPA框架。

<强>敲除的水疗 一个迷你(但功能齐全的)SPA框架,建立在Knockout,Require,Director,Sugar之上。 https://github.com/onlyurei/knockout-spa

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

功能

  • 路由(基于Flatiron的Director):HTML5历史记录(pushState)或哈希。
  • 高度可组合和可重复使用:在页面特定的JS中为页面选择模块/组件,它们将自动连接到页面的HTML模板
  • SEO ready(prerender.io)
  • 快速轻巧(85 KB的JS缩小和gizpped)
  • 用于生产的JS的双层捆绑构建:大多数页面将使用的通用模块,以及将延迟加载的特定于页面的模块
  • 有组织的文件夹结构,可帮助您保持理智,以便组织和重用JS,CSS,HTML
  • 使用Knockout 3.3.0+为Knockout的Web组件和自定义标签(http://knockoutjs.com/documentation/component-overview.html)做好准备
  • 所有文档都在主要依赖项的主页中,因此您无需完全学习新的框架