簡體   English   中英

使用RequireJS自動加載依賴模塊

[英]automatically loading of a dependent module using RequireJS

我正在使用Knockout和Require。 我想使用一個單獨的模塊中的一些淘汰賽處理程序。 沒有依賴此模塊的JavaScript代碼,但是它在HTML的數據綁定屬性中使用。

我該如何告訴Require,無論何時添加敲除腳本,它也應該也添加此模塊,並且該模塊依賴於敲除(它應該能夠使用'ko')?

如果我理解正確,那么這僅是“使用依賴項定義模塊”,這是一個非常基本的requirejs問題。 看一看requirejs api文檔的“帶有依賴項的定義函數”部分。

這是文檔中的示例:

//my/shirt.js now has some dependencies, a cart and inventory
//module in the same directory as shirt.js
define(["./cart", "./inventory"], function(cart, inventory) {
        //return an object to define the "my/shirt" module.
        return {
            color: "blue",
            size: "large",
            addToCart: function() {
                inventory.decrement(this);
                cart.add(this);
            }
        }
    }
);

因此,您也可以在剔除處理程序中執行此操作,將剔除依賴項傳遞給函數。 然后,在需要敲除的每個模塊中,將敲除處理程序添加到define語句中的依賴項。 如果不需要在模塊內部而是僅在DOM內部使用它們,則不必將它們傳遞給函數參數。 您可以僅將敲除處理程序添加到define依賴項列表的末尾,而無需添加如下其他參數:

define(["knockout", "knockout-handlers"], function(knockout) {
        //you're module using knockout, 
        //knockout-handlers will be available inside the dom
});

當我重新思考我的答案時,我得出的結論是,循環依賴在這里不是問題。 您可以對“自動依賴項”使用填充程序配置:

//within your config
requirejs.config({
    shim: {
        'knockout': {
            deps: ['knockout-handlers']
        }
    }
});

//your knockout handlers module definition
define(["knockout"], function(knockout) {
        return {
          //Your knockout-handler module
        }
});

每次加載淘汰賽時,這都會加載淘汰賽處理程序。

暫無
暫無

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

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