我一直在尝试使用Dart几天,我注意到,在处理多个视图和跟踪导航历史时,GWT似乎遇到了同样的问题。
GWT通过MVP(活动和地点)解决了这个问题,但是为一个非常常见的函数编写所有这些类似乎有点不舒服。
有人向我展示了使用路由器处理多个dart页面的框架,但在我看来它看起来非常像MVP。
我的问题是,dart是否可以像flash网站,java applet或任何单一网页网站一样使用?
如果我正在设计一个应用程序,我应该将其计划为单个页面并确保禁用浏览器后退按钮吗?
最后,在示例页面上,所有示例似乎只有一个页面,多个html页面上的示例的任何链接都在其间传递参数?
谢谢。
答案 0 :(得分:5)
Dart绝对适用于单页应用程序 当您想要更改视图时,您只需删除一些HTML并添加其他HTML。
使用Polymer非常简单,因为您可以将视图构建为组件,只需删除一个组件并添加另一个组件。
Polymer提供<template if="{{...}}">
以显示特定视图,具体取决于模型中的某些状态,但也可以强制执行(通过Dart代码)。
路由器包的帮助尤其是将URL与视图连接起来。 它允许将视图设为可收藏,并保持后/前浏览器按钮在最近显示的视图之间来回切换,而无需重新加载页面。
您可以通过订阅某些浏览器事件并修改代码中的浏览器历史记录,在没有路由器包的情况下在您自己的代码中执行此操作,但这可能会变得很麻烦。
答案 1 :(得分:2)
将Dart用于单页面应用程序更方便。 如果您以这种方式使用Dart,您可以手动管理浏览器历史记录,使用不同的包,如https://pub.dartlang.org/packages/route或不使用它,但是可以花费更多的时间和代码。
您还可以查看AngularDart和PolymerDart。这是一篇关于这些框架中差异和共同部分的好文章:https://pub.dartlang.org/packages/route
当然,当您向服务器请求不同页面等时,您可以创建一个好的旧多页应用程序。在这种情况下,你的应用程序的每一页都会像一个小应用程序。同样的情况,如果您使用JavaScript。但是现在这种情况非常罕见。
而且,不要忘记,Dart不仅是前端开发的语言,而且它也是服务器端开发的一个非常好的工具。您可以在服务器和客户端之间共享部分代码。