4

Dart と Route パッケージhttp://pub.dartlang.org/packages/routeの実験を開始しました。

すぐに次の 2 つの疑問が浮かびました。

1) ユーザーが存在しないはずの URL をブラウザーで指定した場合 (たとえば、偽のハッシュ フラグメントを指定することによって)、フォールバック ルートを定義することは可能ですか (慣用的な方法である場合)。コード例では、ルート フレームワークは単にArgumentError("No handler found for $path").

2) ダーツ エディターは、ルート パスでは/なく、ファイル システム ディレクトリから派生したパスの下でコンパイルされたアプリケーションを提供します。これにより、ルート フレームワークのテストが可能になります。たとえば、アプリケーションを次のように提供することは可能localhost:3030/ですか?

4

2 に答える 2

2

ポイント2について:
次のようにすることができますか?:
URL の変数部分は、' window.location.pathname ' によって設定されます。

library urls;

import 'dart:html';
import 'package:route/client.dart';

final String _pathName = window.location.pathname;

final UrlPattern _base = new UrlPattern("${_pathName}");
final UrlPattern home = new UrlPattern("${_pathName}#home");
final UrlPattern page2 = new UrlPattern("${_pathName}#page2");

// useFragment: true is important! allow keep '#" un url
// allow to bookmark be valid when browser is closed and reopen.
final Router router = new Router(useFragment: true)
        // simple hack to redirect / to /#home (home UrlPattern)
        ..addHandler(_base, (_) => window.location.hash = "#home");

main() {
  router..addHandler(home, showHome)
        ..addHandler(page2, showPage2)
        ..listen();
}

void showHome(String path) {
  query("body").children
          ..clear()


    ..add(new Element.html("<h1>Home</H1>"));
}

void showPage2(String path) {
  query("body").children
          ..clear()
          ..add(new Element.html("<h1>Page2</H1>"));
}
于 2013-07-07T21:19:17.630 に答える