我認爲你對服務器代表的URL以及「通常」甚至不被傳遞到服務器的邏輯URL之間感到困惑。 <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
不顯山露水它提供了第二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 /`的東西,因此會將其餘引用添加到您的元素中。
很好的解釋。謝謝。 – Abhilash