【问题标题】:Dart One page app: routing without AngularDartDart One page 应用程序:没有 AngularDart 的路由
【发布时间】:2018-08-08 10:37:30
【问题描述】:

我想尝试创建一个单一页面应用程序。在 Dart 网站上只解释了使用 AngularDart 的路由。老实说,如果将 Dart 与 AngularDart 一起使用,最好只使用没有 dart 的 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)

【问题讨论】:

标签: web-applications routing dart angular-dart


【解决方案1】:

如果您想要替换 URL 路径的路由,则需要使用 location.pushState、location.popState、location.replaceState API。这将使您无需导航即可修改 URL,并听取这些修改。

您可以在此处查看 Angular 路由器的操作方式: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 并不完全相同,它们实际上是由不同的团队开发的,并且有一些不同的优点和缺点。这也是为什么您在那里看到更积极的开发,而不是我们内部不使用的路线之类的东西。

【讨论】:

  • 我不了解 Angular,我只尝试了 1 周:我学习了基本用法,例如 ng-model 和类似的伪类,因此它似乎类似于纯 Angular。不管怎样,我真的很喜欢 Dart,纯粹的 Dart。我在网站上完成了所有教程 Tour of Heroes:它只使用 AngulaDart,但没有任何类型的与使用 AngularDart 和 Dart:html 的 Dom 的交互。如何在不同的类或组件中实现它。 AngularDart 对组件管理很有用:在组件中,您可以轻松地解释您的标签、html 和 css。那么有可能在 AngularDart 类中使用 dart:html 吗?
  • AngularDart 你总是可以在构造函数或指令中注入一个元素,这样你总是可以拥有 DOM 的句柄。这就是说你大部分时间都不需要它。我们将它用于焦点管理和其他一些高级的事情,但大多数情况下我们不会经常接触元素。
  • 我来自java和Android,所以我的逻辑尊重dart概念,例如:ButtonElement buttonLogin = querySelector("#buttonLogin");。 Angulardart 的工作方式略有不同。我需要学习更好的angulardart
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
相关资源
最近更新 更多