我已经熟悉Knockout
,Angular
,Sammy
,jQuery
,微风和一点点烬。所有教程和Durandal
的入门似乎都在说......首先添加jQuery并且可能是淘汰赛。
它能处理与所有这些完全不同的东西吗? 它有什么需要解决它可能与淘汰赛一起使用?
它只是客户端路由和ui组件的大杂烩吗?
它在概念上有什么作用?
答案 0 :(得分:11)
Durandal类似于Angular,因为它为客户端SPA Web应用程序提供了MV *框架。
Angular主要是(如果不是全部)自定义代码,而Durandal采用现有的库,主要是Knockout和RequireJS(Sammy依赖已经被2.0版本所取代),并提供管道以提供完整的SPA功能,包括视图/视图模型组合和哈希标签(spa)导航。
至于Knockout,Durandal在很大程度上依赖于Knockout来构建视图和查看模型。将视图注入DOM时,您的视图和视图模型将自动进行数据绑定。这样做的好处是我可以使用Knockout来提供V / VM数据绑定,让Durandal完成确定要使用哪个v / vm,从服务器检索它并将其组合到当前屏幕的工作。
重申,Durandal提供了一种将视图/视图模型映射到基于哈希标记的路线的方法,它可以为您提供SPA导航。通过将shell
或布局视图指定为主视图,可以添加占位符,Durandal使用该占位符来实现基本上是“屏幕演示者”模式。 Durandal监听URL更改,并可以自动激活,数据绑定(使用Knockout),并显示与当前URL路由匹配的视图。
如果您熟悉WPF,您可能会认为Durandal提供类似Prism的功能,以及旨在支持为网络构建单页应用程序的其他好东西。
答案 1 :(得分:10)
Durandal有几个好处,但也建立在现有的库上。它依赖于
这些不是“maybes”。它们是硬依赖性的。如果没有他们,Durandal就无法工作。
在它的核心,Durandal添加了非常强大的 compose 绑定到淘汰赛。此绑定将在传递viewmodel时自动定位视图(HTML文件),从服务器检索它,将其绑定到viewmodel,然后将它们插入到DOM中。使用knockout template
绑定可以实现类似的行为,但管理模板可能会变得很麻烦。组合还会向流程添加生命周期事件,这有助于确保正确设置和拆除视图模型。它还提供可选的DOM缓存。
除此之外还有许多其他小功能,Durandal Homepage有一个很好的参考。
答案 2 :(得分:9)
Durandal是一个“全功能”SPA框架,而Knockout只是数据绑定。它的范围与Angular类似。
答案 3 :(得分:1)
Magento 2站在Knockout和RequireJS上。 可以在其上添加Durandal,因此使用最新功能(组件,模板等)的可能性更大。
更好,因为:
它比其他框架更稳定,更重要,发生的错误更少
精彩文档
简单的api
更多SEO友好! (你可以把所有的html seved并像组件一样使用它,混合情况)。 Angular 2代表混合逻辑与演示。
html5标准数据和绑定具有更好的代码可重复性(只需尝试阅读html中的反应)
仍然保持
Durandal的创造者有一段时间是Angular Developer(3个月)所以在思考方面有一些相似之处。
在旧浏览器中工作! (IE6>)
还有一些缺点,但主要是因为它没有在一个包装中提供如此多的功能而不是新的,尖端技术被采用。
请求与Durandal分享更多观点:)
更多:https://johnpapa.net/compare-durandal-to-angular-not-knockout-to-angular/