[英]RequireJS - Exporting a Set of Functions
我遇到了RequireJS的問題,當我有一個require語句時,我無法導出一組函數。
假設我有一個名為mySubFile.js的文件,其中,首先需要注入jQuery ,然后再注入另一個依賴項。 現在,假設我有myFunction,並且想導出它以便從另一個文件中調用。
define('mySubFile', ['jquery'], function ($) {
require(['dependency1'], function (dependency1) {
let myFunction = function(){ return "Hey There"; }
return : {
myFunction : myFunction
}
});
});
現在,假設我要從myFile.js調用該函數:
define('myFile', ['jquery'], function ($) {
require(['mySubFile'], function (mySubFile) {
console.log(mySubFile.myFunction());
});
});
這是行不通的。 我得到:
無法讀取未定義的屬性“ myFunction”。
另一方面,如果我按以下方式定義mySubFile.js :
define('mySubFile', ['jquery', 'dependency1'], function ($, dependency1) {
let myFunction = function(){ return "Hey There"; }
return : {
myFunction : myFunction
}
});
我可以訪問myFunction,但需要首先解析jQuery 。
我正在努力尋找解決方法,但仍然沒有發現任何東西。
我該如何解決?
如果您始終需要在模塊之前使用jQuery,則可以這樣做:
define("mySubFile", function(require, exports, module){
var a = require("jQuery"), // dependency
b = require("knockout"); // dependency
/* rest of the code for this module */
let myFunction = function(){ return "Hey There"; }
return : {
myFunction : myFunction
}
});
鑒於您在問題中顯示的代碼,這確實是可行的方法:
define('mySubFile', ['jquery', 'dependency1'], function ($, dependency1) {
但是您不想使用它,因為:
可以訪問myFunction但我需要首先解析jQuery 。
好吧,可以肯定的是,在返回值之前必須先解析jquery
,但讓我們先假設一下,其中有一些魔術可以讓您的其他嘗試返回您想要的值,並從獲取結果的角度來看一下解決時間。 這是您所擁有的:
define('mySubFile', ['jquery'], function ($) {
require(['dependency1'], function (dependency1) {
這是發生了什么:
define
調用被執行。 RequireJS看到一個模塊名稱( mySubFile
),一個依賴項列表['jquery']
和一個回調。 jquery
並使用它調用回調。 require
調用已執行。 RequireJS看到一個依賴項列表和一個回調。 dependency1
並調用回調。 同樣,在這里,必須先解析jquery
,然后才能返回任何內容。 在define
回調中包含一個require
不會對此進行任何更改。
將require
調用放入define
以按您想要的方式工作將需要大量重寫。 順便說一下,您遇到的問題並非特定於RequireJS,而是所有異步代碼共有的問題。 見這個問題的普遍問題和方法吧。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.