本地托管的聚合物项目URL路径定制


 applications: http://localhost:8080
    reusable components: http://localhost:8080/components/myapp/

这是允许我在运行polymer serve

后访问我的项目的两条路径

使用app-route元素,我可以改变myapp部分。但是我想去掉components部分。我想要的是http://localhost:8080/myapp/我怎样才能做到这一点呢?

我认为您正在混淆由服务器表示的url和"通常"甚至不传递给服务器的逻辑url。<app-route>(及其同伴<app-location>)依赖于将状态推入浏览器的地址栏,但这通常并不意味着向服务器请求获取文件。

我说"正常"是因为显然用户可以复制并粘贴地址栏到浏览器中(或者只是刷新页面时,它显示在浏览器中),这导致该url被发送到服务器。正常情况下,服务器应该自动响应那些"非真实文件"请求,并返回"/index.html"。

Polymer serve并没有真正尝试解决这类问题。它主要是一个用于应用程序测试的快速服务器。如果你有一个完整的应用程序,它提供的第一个url (http://localhost:8080)将是你使用的。你的index.html文件应该位于url的根目录(即你运行聚合物服务的目录),然后它将使用html导入来加载你的组件,从它们恰好在的子目录中。您的url应该反映这一点。因此,如果你的主应用程序是在src/子目录中,你应该参考它<link rel="import" href="/src/my-app.html">注意,通过绝对URL引用它是很重要的,这样当用户将URL粘贴到地址栏,服务器返回/index.html的元素,它然后请求在正确的路径,而不是像/application/logical/path/src/myapp.html的地方

它提供的第二个url基本上是你正在构建自己的元素,最终将进入其他人的bower_components,但现在你正在自己的存储库中开发自己的bower_components目录,与元素处于同一级别。您的元素将需要导入类似<link rel="import" href="../polymer/polymer.html" but in physical directory terms would be at bower_components/polymer/polymer.html. In this case polymer is mapping bower_components to http://localhost:8080/components and your root to http://localhost:8080/components/myapp. So when your refer to的内容。/as part of your relative its basically inside bower_components/'已经,因此将拾取元素引用的其余部分

最新更新