我正在編寫使用requireJS的第三方JS應用程序,並且我想保留全局名稱空間除了將由我的應用程序創建的單個全局接口對象之外的所有內容。除了requireJS,我沒有任何問題。如何將requireJS函數保存在全局名稱空間之外?
作爲優化器的一個選項,可以將require.js捲入構建中,並且可以定義名稱空間使優化器將所有引用都要求函數作用於該名稱空間。
例如。需要(...)變成my_scope.require(...)
問題是,這個全局命名空間對象將不會存在,直到它在應用程序中創建。優化器確保requireJS加載&在它加載的任何代碼之前執行,因此當執行require函數(如require或define)時,會引發異常(名稱空間對象未定義)。
是否有人成功地做到了這一點,而無需手動更改構建的腳本或運行與構建腳本分開的另一個腳本?換句話說,是否有適當的方法來實現這一目標?
不幸的是,即使加載require.js也會將requireJS函數添加到GNS中。通過要求加載非AMD腳本也不能提供保持GNS不增長的好方法。 – 2012-01-12 01:13:24