AngularJS ui-router的替代品

时间:2014-12-17 10:18:38

标签: angularjs web-applications angular-ui-router web-frameworks

我刚开始一个新项目。我正在构建一个“具有本机感觉”的Web应用程序,它将在全屏浏览器中的远程控制设备上运行(没有地址栏,固定分辨率)。 UI基本上由多个全屏视图组成。 AngularJS目前是首选武器,原因多种多样。我一直在尝试'ui-router'及其'状态'来构建不同的视图。例如:

/#/desktop
/#/menu
/#/videoStore/posterView
/#/videoStore/listView

我非常喜欢每个视图都有一个模板,一个控制器和一个URL。切换视图时页面不重新加载的事实是至关重要的。但是,有一些我缺乏的东西。

双缓冲

我希望能够在转换到之前准备下一个状态/视图。 ui-router 提供了一系列的活动。在onEnter构建之前,$stateChangeStart$stateChangeSuccessstate/view controller都会被调用。我宁愿在转换之前将这些事件称为 on 控制器。例如,onStart首次启动时,onResume恢复。

历史记录行为

每次进入状态时似乎都会重建状态,这意味着模板会再次添加到DOM中并实例化一个新的控制器。这是不必要的,应该会破坏性能。离开videoStore时无需重新构建菜单。事实上,我希望能够完全相同,重点关注子文件夹中的相同项目,而不必重新创建它。

Keyhandling

我还没弄清楚如何确保按键转到正确的状态/视图或子视图。我正在考虑向正文添加一个监听器,然后将密钥发送到当前作用域。虽然我不认为这样做会因为在一个州内有多个观点时哪个范围是“活跃的”的不确定性。状态/视图控制器上的某种onFocus事件会很棒。此外,除非遍历$$(私有)字段,否则似乎无法从angular获取“活动”范围。

好的。谢谢你的阅读。

以下是我的问题:

  • 他们是否有某种方式与ui-router“凑合”?我只评估了两天,可能错过了很多。
  • 那里有ui-router的有价值的Angularjs替代品吗?
  • 是否还有其他任何Javascript框架可以完成与我描述的相似的事情?

1 个答案:

答案 0 :(得分:2)

你应该对ui-router很好。对于列出的大多数问题,您似乎只需要最小化您在控制器中执行的代码量并将其移至工厂/服务/提供商。通过这种方式,您可以更严格地控​​制数据的获取方式。

关于DOM,如果你正确使用嵌套状态,那么在状态之间转换时你实际上不应该重新加载导航或其他部分。

最后一点键盘处理只是一个难题,无论底层框架是什么。您可以使用更改焦点的指令进行检查(如果没有任何可用的内容可以搜索,那么请学会自己动手,假设此处tabindex不够好)。

就我所见,ngRoute或uiRouter是您的选择,就客户端路由而言,uiRouter功能更丰富。

关于是否有“更好”的框架可用,主要基于意见(主观)或不知道参数的问题我们可以判断技术不适合StackOverflow。