我刚刚开始了一个新项目。我正在构建一个“具有原生感觉”的 Web 应用程序,它将在全屏浏览器中的远程控制设备上运行(无地址栏,固定分辨率)。 UI 基本上由多个全屏 View 组成。 AngularJS 目前是首选武器,原因有很多。我一直在尝试“ui-router”及其“状态”来构建不同的 View 。例如:
/#/desktop
/#/menu
/#/videoStore/posterView
/#/videoStore/listView
我非常喜欢每个 View 都有一个模板、一个 Controller 和一个 URL。切换 View 时页面不会重新加载这一事实至关重要。但是,有些东西是我欠缺的。
双缓冲
我希望能够在过渡到下一个状态/ View 之前准备好它。 ui-router 提供了一系列事件,这些事件将 不是 做。
onEnter
, $stateChangeStart
和 $stateChangeSuccess
都在 state/view controller
之前调用甚至被 build 。我宁愿这些事件称为 在 过渡前的 Controller 。例如 onStart
首次启动时和 onResume
在简历上。历史行为
每次我进入状态时似乎都会重新构建状态,这意味着模板会再次添加到 DOM 中,并实例化一个新的 Controller 。这是不必要的,应该会影响性能。离开 videoStore 时无需重建菜单。事实上,我希望能够让它完全一样,专注于子文件夹中的同一项目等,而不必重新创建它。
key 处理
我还没有弄清楚如何确保键进入正确的状态/ View 或 subview 。我正在考虑向 body 添加一个监听器,然后将 key 发送到当前范围。虽然我不认为这样做会因为在一个状态中有多个 View 时哪个范围是“事件的”的不确定性。某种
onFocus
状态/ View Controller 上的事件会很棒。此外,除非遍历 $$ (私有(private))字段,否则似乎无法从 Angular 获取“事件”范围。好的。谢谢阅读。
以下是我的问题:
ui-router
?我只评估了两天,可能错过了很多。 ui-router
在外面吗? 最佳答案
你应该对 ui-router 没问题。关于列出的大多数问题,您似乎只需要尽量减少您在 Controller 中执行的代码量,并将事情转移到工厂/服务/供应商。通过这种方式,您可以更严格地控制数据的获取方式。
关于 DOM,如果您正确使用嵌套状态,那么您实际上不应该在状态之间转换时重新加载导航或其他部分。
最后一点,无论底层框架是什么,键盘处理都是一个难题。您可以使用更改焦点的指令进行检查(如果没有可用的东西可以满足您的需要,然后学习自己滚动,假设这里的 tabindex 不够好)。
就我所见,ngRoute 或 uiRouter 是您的选择,就客户端路由而言,uiRouter 功能更丰富。
关于是否有“更好”的框架可用,主要基于意见(主观)或不知道我们可以判断技术的参数的问题不适合 StackOverflow。
关于angularjs - AngularJS ui-router 的替代品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27523220/