請requireJs不能重新加載jQuery我正在編寫一個腳本,意在嵌入到第三方網站以向其添加功能。我最近撕掉了我相當混亂的定製加載器代碼,並開始用requirejs替換它。其中一個有選擇性地爲我加載的庫(取決於傳入的一些參數)是jQuery。如果已經在第
這很好,直到我的腳本被包含在jQuery已經在的頁面上,在這種情況下,似乎發生的情況是部分插件部分加載,requirejs在頁面版本上加載jQuery,並且插件立即中斷。
要求客戶端重寫他們的頁面只是爲了使用這個腳本是不可能的,所以我想要做的是檢測jQuery是否已經加載,如果是,請跳過通過requirejs加載它,然後使用已經加載了一個(這可能會讓我碰到奇怪的邊緣情況和錯誤,當他們使用jQuery的老版本,但我沒有太多選擇)。
我以爲我會做的是寫一個新的模塊,它會先看看是否加載jQuery,如果是,只導出jQuery對象,如果不是,然後加載它,然後執行導出。然而,由於模塊的定義函數似乎需要與工作同步,因此我似乎很困難,所以我無法卸載並加載另一個腳本,這將是異步的,然後將導出填充到requirejs中。
我在文檔中丟失了什麼嗎?我試圖做不到?
它會幫助[同時加載兩個不同版本的jQuery](http://stackoverflow.com/q/1566595/33732)? –
這將解決版本控制問題。但是,這似乎並不能解決插件的踐踏問題,因爲頁面版本可能會在我的之前加載,而且沒有noconflict。我想我可以修改我服務的jQuery版本,不要踐踏$/jQuery對象,只是將自己暴露爲一個模塊,但我寧願將它作爲最後的手段,因爲那樣我就不得不記住要做到這一點當我更新jQuery時更改。 –
這應該不重要。只有一個庫需要注意不衝突模式。當你在你的jQuery副本上調用'noConflict'時,$'和'jQuery'的值會從加載副本之前恢復到原始文件。使用原始實例的插件將繼續引用它。原來的jQuery實例會認爲它是唯一的,這很好。 –