2016-04-04 114 views
0

我想讓JQWidgets工作。它有一個定義以下變量的jsxcore.js文件:是system.js添加東西到我的JavaScript?

var jqxBaseFramework = window.minQuery || window.jQuery; 

然後在其他文件中使用此變量。但是我在下一個文件中出現錯誤,說明jqxBaseFramework is not defined

我注意到,當我system.import一個文件,這個加入到它的頂部:

(function(require, exports, module, __filename, __dirname, global, GLOBAL) { 

這將導致變量,這將是在範圍上是超出範圍。

是system.js這樣做嗎? 如果是這樣,是否有解決範圍問題的工作?

如果不是這樣,我將不得不將這個變量添加到每個文件的頂部....並不好玩,因爲有很多。

+0

瞭解CommonJS模塊。你應該使用'require()'/'import',而不是全局變量。 – SLaks

+0

@SLaks - 這不是我的代碼。我在我的代碼中這樣做。我的代碼使用'import'。但我需要一種方法讓JQWidgets加載到我的代碼中。 – Vaccano

回答

1

是system.js這樣做嗎?

如果是這樣,有一個變通的範圍問題?

是的。 SystemJS是一個模塊加載系統。你把你的文件當作封裝模塊。你應該拋棄全局概念。

如果您想要公開模塊中的值,請將其導出。如果模塊需要某個模塊的值,則需要它。閱讀更多關於CommonJS的信息,瞭解更多關於這個機制如何工作的信息

+0

這聽起來像個好主意。我在我的代碼中這樣做。唉,我不擁有JQWidgets的代碼,並且找不到合理價格的替代品。有沒有辦法將這個變量/值傳遞到模塊/文件而不修改它? – Vaccano

+0

@Vaccano最快的方法是創建一個輸出它的虛擬模塊。就像'module.exports = window.minQuery || window.jQuery;' – Joseph

+0

我不是一個JavaScript專家,所以我可能會在這裏丟失一些東西,但是當下一個文件引用'jqxBaseFramework'時,它仍然會失敗,對吧?因爲我的導出沒有連接到該變量。 – Vaccano