【问题标题】:Dart Route URLPattern base urlDart Route URLPattern base url
【发布时间】:2013-11-11 17:03:47
【问题描述】:

运行Dart Route Client example 时出现错误:

Illegal argument(s): No handler found for /MYAPP/web/myapp.html 这是有道理的,因为默认示例将 URLS 定义为

library example.urls;

final one = new UrlPattern('/one');
final two = new UrlPattern('/two');
final home = new UrlPattern('/');

然后处理路由:

 import 'urls.dart' as urls;
 ...
 var router = new Router()
    ..addHandler(urls.one, showOne)
    ..addHandler(urls.two, showTwo)
    ..addHandler(urls.home, (_) => null)
    ..listen();

鉴于我的应用程序将根据运行环境(本地、开发、测试、生产)具有不同的基本 URL,并且这些 URL 看起来像这样

http://MYAPP/web/index.html
http://dev.mydomain.com/alpha/index.html
http://dev.mydomain.com/index.html
http://dev.mydomain.com
http://test.mydomain.com/index.html
http://test.mydomain.com
http://mydomain.com/index.html
http://mydomain.com

如何在我的 URLPatterns 中定义表达式以避免必须根据环境重命名它们。具体来说,我如何定义一个代表我的层次结构根的“home”url,知道我将使用 root+hash 来表示 home 以外的地方。

【问题讨论】:

    标签: regex dart


    【解决方案1】:

    所以看起来示例服务器中的某些代码尚未针对 Dart 1.0 进行更新,因此服务器不会运行,并且该示例需要服务器,因为它使用 pushState。我将修复推送到 0.4.6 版。

    要运行该示例,请运行 server.dart,然后将 Dartium 导航到 http://127.0.0.1:8080。如果你想在另一个浏览器中运行它,你必须先用 dart2js 编译 client.html。

    【讨论】:

    • 客户端代码工作正常,但我的问题更多是关于如何在客户端创建 URLPattern 以便在我重新部署时不需要更新它。我正在寻找类似于 Angular 的 $RouteProvider docs.angularjs.org/api/ngRoute.$routeProvider 的行为,它可能在那里,我只是不知道如何创建正确的正则表达式。
    • 客户端代码仅在与示例服务器一起运行时才能正常工作,该示例服务器最近由于 SDK 损坏而运行。这就是“没有为 /MYAPP/web/myapp.html 找到处理程序”的最初问题所在,您很可能直接从编辑器启动客户端示例。至于前缀,Angular $location 服务知道加载应用程序的初始 URL,但该策略本质上与基于 pushState 的系统不兼容,因为应用程序最初可以从任何 URL 加载,而不仅仅是根 URL .根 URL 需要成为某些配置的一部分。
    • 我想我可能问错了问题。我浏览了存储库中的其他分支,看起来分层和 0.5.0 都完全符合我在客户端的要求。我觉得即将发布的 Dart 1.0 正在其中发挥作用,我应该坚持实验性的路线分层,直到水平息为止。
    • 你能描述一下他们做你想做的事吗?我现在正在开发 0.5.0,想了解它对你有什么不同。
    • #5 是我们在任何分支中都没有的,因为它需要了解应用程序的根 URL 是什么。 AngularJS 的 $location 服务从用于访问应用程序的第一个 URL 推断出这一点,但我看不出它是如何工作的,您可以深度链接到使用 pushState 的单页应用程序。我真的认为根 URL 必须有一些部署配置。如果你有一个绕过的建议,我会全力以赴! :)
    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多