require.js 迴圈依賴介紹
所謂迴圈依賴就是a依賴b,b也同時依賴a。
在a執行到require('b')的地方時會停下來去呼叫b,當去執行b,執行到一半發現require('a'),就停下來去呼叫a。
解決方案:
當出現迴圈依賴時,就不要依賴前置載入了,在b需要呼叫a的某個方法的那個地方先就近載入:var a = require('a'),然後再去呼叫b中的方法,程式碼例項如下:
[JavaScript] 純文字檢視 複製程式碼//b.js: define(["require", "a"], function(require, a) { return function(title) { return require("a").doSomething(); } } );
雖然迴圈依賴是比較少見的,但是有時候還是會遇到的,下面再介紹一種解決方案:
如果熟悉CommonJS,可以使用exports為模組建立一個空object,該object可以立即被其他模組引用。在迴圈依賴的兩頭都如此操作之後,就可以安全地持有其他模組了。這種方法僅在每個模組都是輸出object作為模組值的時候有效,換成函式無效。
[JavaScript] 純文字檢視 複製程式碼// b.js: define(function(require, exports, module) { var a = require("a"); exports.foo = function () { return a.bar(); }; });
或者,如果你使用依賴注入陣列的步驟,則可用注入特殊的"exports"來解決:
[JavaScript] 純文字檢視 複製程式碼// b.js: define(['a', 'exports'], function(a, exports) { exports.foo = function () { return a.bar(); }; });
相關文章
- 再探迴圈依賴 → Spring 是如何判定原型迴圈依賴和構造方法迴圈依賴的?Spring原型構造方法
- Spring迴圈依賴Spring
- SpringIOC迴圈依賴Spring
- 淺談迴圈依賴
- Spring IoC - 迴圈依賴Spring
- 探索 JavaScript 中的依賴管理及迴圈依賴JavaScript
- go 中的迴圈依賴Go
- spring解決迴圈依賴Spring
- Spring迴圈依賴+案例解析Spring
- Spring中的迴圈依賴Spring
- 【Spring系列】- Spring迴圈依賴Spring
- 【Spring】快速理解迴圈依賴Spring
- 四探迴圈依賴 → 當迴圈依賴遇上 BeanPostProcessor,愛情可能就產生了!Bean
- Spring 中 bean 的迴圈依賴SpringBean
- 【spring】迴圈依賴 Java Vs SpringSpringJava
- Spring如何解決迴圈依賴?Spring
- 三探迴圈依賴 → 記一次線上偶現的迴圈依賴問題
- Spring 迴圈依賴的三種方式(三級快取解決Set迴圈依賴問題)Spring快取
- jQuery Validate依賴項介紹jQuery
- Spring中如何解決迴圈依賴Spring
- Spring怎麼解決迴圈依賴?Spring
- 3.1 spring5原始碼系列--迴圈依賴 之 手寫程式碼模擬spring迴圈依賴Spring原始碼
- spring是如何解決迴圈依賴的?Spring
- Spring原始碼分析之IOC迴圈依賴Spring原始碼
- 幫助你更好的理解Spring迴圈依賴Spring
- c++類迴圈依賴的問題C++
- Spring是如何解決迴圈依賴的Spring
- 一文詳解spring迴圈依賴Spring
- 介紹Python的 迴圈Python
- Spring原始碼分析:Spring的迴圈依賴分析Spring原始碼
- 迴圈依賴三重境界之二:@EnableAspectJAutoProxy
- 面試題:Spring 的迴圈依賴問題面試題Spring
- Spring 是怎麼處理迴圈依賴的?Spring
- 【spring原始碼系列】之【Bean的迴圈依賴】Spring原始碼Bean
- 【Spring】Spring中的迴圈依賴及解決Spring
- 關於我對Spring迴圈依賴的思考Spring
- 一張圖徹底搞懂Spring迴圈依賴Spring
- spring: 我是如何解決迴圈依賴的?Spring
- 徹底理解Spring如何解決迴圈依賴Spring