簡體   English   中英

需要Js - 在“不完全客戶端應用程序”中尋求requirejs的混合實現

[英]Require Js - Seeking Hybrid implementation of the requirejs in “Not fully client side application”

我正在探索requirejs(用於異步加載模塊和依賴項的JavaScript模塊加載器)。

我所理解的是你需要將所有的JavaScript庫或插件(如Jquery等)加載到require.config中,以用作你創建的任何自定義模塊中的依賴項或你使用的任何其他直接依賴的插件在jquery或任何其他lib上。

我不確定並且持懷疑態度的是,它是否可以在已經構建的應用程序中使用,我只需要很少的依賴於Jquery的插件或庫來使用requirejs定義/使用其他應用程序javascript繼續使用jquery以行的形式。

也就是說:我使用腳本標記包含jquery,而不是通過require.config,但希望使用並包含其他插件/ JavaScript,使用依賴於Jquery的require js。

簡而言之,我想在我已經構建的服務器端應用程序中實現requirejs的一種混合實現,而不是完全客戶端應用程序。

代碼片段或操作方法將受到高度贊賞。

是的,如果你小心你做了什么,這是可能的。

加載了使用RequireJS加載的代碼所依賴的JavaScript代碼的所有script元素應出現使用RequireJS啟動模塊加載的任何代碼之前 當RequireJS開始加載模塊時,這是確保所需內容可用的唯一方法。

然后,您可以選擇使用RequireJS加載模塊,只需假設加載script已在全局范圍內可用,並使用它而不將其添加到依賴項中。 例如,如果一個模塊需要jQuery並且它已經加載了一個script元素,那么該模塊將假定已經定義了$

define(function () {
    $("p").append(...);
});

對於已經使用script元素加載的代碼已經列出依賴關系的第三方代碼,或者如果您希望在顯式編寫的代碼中創建依賴關系,則必須使用“glue modules”。 這是我更喜歡我自己的代碼的選項。 )上面的相同模塊將正式要求jQuery:

define(["jquery"], function ($) {
    $("p").append(...);
});

你必須有一個jquery的“膠水模塊”。 我通常在require.config調用之前放置這些模塊, 而不是將它們放在單獨的文件中。 它會是這樣的:

define('jquery', function () {
    return $;
});

請注意,這里define調用的第一個參數是一個字符串(而不是一個數組),它告訴RequireJS模塊名為jquery 你通常不應該硬編碼像這樣的名稱,但對於膠水模塊,這沒關系。 膠水模塊假設$已定義並且是jQuery。 任何需要jQuery的模塊都依賴於這個模塊。 如果在稍后階段將jQuery加載為RequireJS模塊,則可以刪除粘合模塊,並且不需要修改任何依賴於jQuery的模塊。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM