我正在使用Buget安裝到ASP.NET MVC應用程序中的Twitter Bootstrap。然而,我驚奇地發現,我的所有bootstrap JavaScript過去在本地主機上工作,實際上在上傳到我的虛擬主機提供商時仍然停止工作。Bootstrap JavaScript適用於本地主機,但不適用於虛擬主機
我完全碰到這一點,我似乎無法弄清楚什麼是錯的。
我正在使用Buget安裝到ASP.NET MVC應用程序中的Twitter Bootstrap。然而,我驚奇地發現,我的所有bootstrap JavaScript過去在本地主機上工作,實際上在上傳到我的虛擬主機提供商時仍然停止工作。Bootstrap JavaScript適用於本地主機,但不適用於虛擬主機
我完全碰到這一點,我似乎無法弄清楚什麼是錯的。
一些依賴於jQuery的腳本將在jQuery加載前被包含。
我建議移動
<script src="/Scripts/bootstrap.js" type="text/javascript"></script>
<script type="text/javascript" src="http://twitter.github.com/bootstrap/assets/js/bootstrap-dropdown.js"></script>
和自定義包含的JavaScript從第75行開始,到包含jQuery包之後的頁面底部。或者也可以將你的jQuery包放入你的<head>
。這是你的首選項 - 看到這個問題:Should Jquery code go in header or footer?關於那個特定的問題...
你說它在你的本地盒子上,而不是在遠程服務器上 - 如果真的如此,那麼我最好的猜測是,這與捆綁/縮小的工作方式不同,這取決於您處於調試模式還是發佈模式。
UPDATE 基本上,在調試版本,沒有捆綁/縮小時在你的腳本和CSS進行。您在捆綁中引用的每個<link>
和<script>
都將作爲單獨的文件包含在內,而不會對其應用轉換。在發佈版本中,捆綁包中的文件被連接在一起成爲一個文件,並將諸如縮小等轉換應用於它們。根據您的評論,爲了獲得本地和已發佈站點的調試行爲,我看到3個選項:
1.在您的發行版本中,將web.config中的編譯調試標誌設置爲true。
即
<system.web>
<compilation debug="true" />
<!-- Lines removed for clarity. -->
</system.web>
我不會特別推薦這個,因爲你的發佈版本通常不應該被標記爲正在調試。但這是一個有用的設置,可以快速切換到您的發佈版本,以檢查您的javascript/css在關閉時是否正常工作。
2.在代碼中,關閉捆綁包表中的捆綁優化。
public static void RegisterBundles(BundleCollection bundles)
{
// other code...
BundleTable.EnableOptimizations = false;
}
3.不要這麼做。
行爲上的差異是設計上的,也是有意義的 - 在你的本地機器上進行開發時,你可以看到所有單獨的腳本/ css文件,並且以非未定義的形式,這使得調試更容易。發佈後,這些文件將壓縮爲一個壓縮文件,這將減少您網站的加載時間。
我個人推薦選項3,並確保您的樣式/腳本按正確的順序包含在內。
在你的頁面你有
<link href="/Content/bootstrapcss" rel="stylesheet"/>
...有與該文件類型曇花一現,或許這應該是
<link href="/Content/bootstrap.css" rel="stylesheet"/> ?
而且還有你的Modernizr的文件的路徑問題,檢查路徑是正確的,文件存在:
http://bipscore.com/Scripts/modernizr-1.7.min.js
可能還有其他問題,但不會傷害到g先將這兩個更正。
祝你好運!
是的我得出了捆綁和縮小問題的結論。它的工作方式取決於在發佈模式還是調試模式下。任何想法如何規避這一點,因爲我認爲他們都是一個一樣的 – 2013-04-05 17:26:15
@PeterEdike請參閱我的更新的答案。 – ngm 2013-04-08 07:57:10