App Engine + Polymer.dart 带有 hashbang 的单页 Web 应用路由
Posted
技术标签:
【中文标题】App Engine + Polymer.dart 带有 hashbang 的单页 Web 应用路由【英文标题】:App Engine + Polymer.dart single page web app routing with hashbang 【发布时间】:2015-08-01 12:11:34 【问题描述】:我正在使用polymer.dart 创建一个单页网络应用程序,并希望将其部署在谷歌应用程序引擎上。我在路由堆栈
我的服务器使用 redstone 和shelf_static,客户端使用route_hierarchical。
bin/server.dart
import 'package:appengine/appengine.dart';
import 'package:redstone/server.dart' as app;
import 'package:shelf_static/shelf_static.dart';
main()
var staticHandler = createStaticHandler("web",
defaultDocument: "index.html", serveFilesOutsidePath: true);
app.setShelfHandler(staticHandler);
app.setupConsoleLog();
app.setUp();
runAppEngine(app.handleRequest);
lib/main_app/main_app.dart
import 'package:polymer/polymer.dart';
import 'package:route_hierarchical/client.dart';
@CustomTag('main-app')
class MainApp extends PolymerElement
final Router router = new Router();
MainApp.created() : super.created();
ready()
print("Main App: ready()");
router.root
..addRoute(name: 'home', path: '/', enter: showHome, defaultRoute: true)
..addRoute(name: 'login', path: '/#!/login', enter: showLogin);
router.listen();
void showHome(RouteEvent event)
print("Main App: showHome()");
void showLogin(RouteEvent event)
print("Main App: showLogin()");
lib/main_app/main_app.html
网页/index.html
页面
首页:localhost:8080/ 登录:localhost:8080/#!/login如果我使用“pub serve”命令在本地运行应用程序,它就可以工作。 但是,如果我使用“gcloud preview app run app.yaml”命令在 appengine 上运行它,登录路由将不起作用并记录错误。 http://prntscr.com/77adww
【问题讨论】:
您是否打算为web/index.html
添加源?
我不知道它是什么库,也没有运行 pub 服务器。我只运行 ff 命令:“boot2docker up”、“$(boot2docker shellinit)”、“pub build”、“gcloud preview app run app.yaml”
是的,请稍等
@GünterZöchbauer 谢谢大佬,直接访问链接#!/login 还是使用地址栏显示表单?
是的,它可以工作,但是当我点击登录然后刷新页面时,它不起作用
【参考方案1】:
我终于让它工作了!问题是,就像@Jake MacDonald 所说的那样,我正在运行未转换的输出。方法如下
替换
var staticHandler = createStaticHandler("web", defaultDocument: "index.html", serveFilesOutsidePath: true);
与
var staticHandler = createStaticHandler("build/web", defaultDocument: "index.html", serveFilesOutsidePath: true);
【讨论】:
以上是关于App Engine + Polymer.dart 带有 hashbang 的单页 Web 应用路由的主要内容,如果未能解决你的问题,请参考以下文章