applications: http://localhost:8080
reusable components: http://localhost:8080/components/myapp/
这两条路径允许我在运行polymer serve
使用app-route
元素,我可以更改myapp
部分。但我想删除components
部分。
所以,我想要的是http://localhost:8080/myapp/
我怎样才能做到这一点?
答案 0 :(得分:1)
我认为你在服务器代表的网址和“正常”甚至没有传递给服务器的逻辑网址之间感到困惑。 <app-route>
(及其配套部分<app-location>
)依赖于将状态推送到浏览器的地址栏,但这通常不意味着请求服务器获取文件。
我说“正常”,因为显然用户可以将地址栏复制并粘贴到浏览器中(或者只是在浏览器中显示时刷新页面)并导致该URL被发送到服务器。通常,服务器应使用“/index.html”自动响应那些“非实际文件”请求。
Polymer serve
并没有真正尝试解决这类问题。它主要是用于您的应用程序测试的快速服务器如果你有一个完整的应用程序,它提供的第一个网址(http://localhost:8080)将是你使用的。你的index.html文件应该位于url的根目录(即你运行聚合物服务的目录),然后它将使用html导入来加载你的组件,它们恰好是它们所在的子目录。你的网址应该反映出来。因此,如果您的主应用程序位于src/
子目录中,则应引用它<link rel="import" href="/src/my-app.html">
注意通过绝对URL重新引用它是很重要的,因此当用户将URL粘贴到地址栏中时服务器返回/index.html
然后请求的元素位于正确的路径而不是/application/logical/path/src/myapp.html
它提供的第二个网址基本上是你构建自己的元素,最终会进入某个人的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 /`的内容,因此将拾取元素的其余引用确定。