Dart一页应用程序:不使用AngularDart进行路由

时间:2018-08-08 10:37:30

标签: web-applications routing dart angular-dart

我想尝试创建一个单页面应用程序。在Dart网站上仅说明使用AngularDart进行路由。老实说,如果将Dart与AngularDart一起使用,最好只使用不带飞镖的Angular。

因此,我尝试使用以下方式创建此一页应用程序

HttpRequest类

button.onClick.listen((e){
    HttpRequest.getString("test.html").then((html){
      querySelector(".container").innerHtml = html;
    });
  });

在我的test.html中,我只写<h1>test page</h1> 那是工作!!!但是如何修改URL?我尝试使用History类(例如javascript),并且运行良好:我的网站来自 www.mysite.com ,成为 www.mysite.com/test

但是,如果我在浏览器的URL输入中插入 www.mysite.com/test ,则会显示404错误。

飞镖的路线包装,自5年以来已停产。 (https://github.com/justinfagnani/route

1 个答案:

答案 0 :(得分:2)

如果要使用路由替换URL的路径,则需要使用location.pushState,location.popState,location.replaceState API。这样一来,您无需浏览即可修改URL,并聆听这些修改。

您可以在此处查看角度路由器的工作方式:https://github.com/dart-lang/angular/blob/master/angular_router/lib/src/location/path_location_strategy.dart

使用该策略,尽管需要配置服务器,以便所有这些路径将由同一html页面提供。或者,当您在不使用应用程序的情况下导航至页面时,您会得到404。

另一种策略是在URL末尾使用#进行路由。这将更改URL,而无需导航到新的地方,并让您的应用在#之后监听数据,而不用更改路径。这无需修改服务器即可工作。

您可以在这里查看angular_router中使用的策略:https://github.com/dart-lang/angular/blob/master/angular_router/lib/src/location/hash_location_strategy.dart

最后,您可能需要重新考虑AngularDart,这是Google的许多团队使用的,并且是Google当前使用的唯一Dart Web框架。我们的团队真的很喜欢。它与Angular不太一样,它们实际上是由不同的团队开发的,具有一些不同的优点和缺点。这也是为什么您看到那里更加活跃的发展,而不是像我们内部未使用的路线这样的原因的原因。