1
我正在嘗試創建一種API。出於這個原因,我嘗試導入導入調用來自的文件的主文件(該文件公開了API),其中包括導出文件的情況!瞭解ES6中的循環依賴關係
令人困惑?大!
項目結構:
/
/src
/src/js
/src/js/modules
/src/js/modules/moduleA/index|actions|components|selectors
/src/js/modules/moduleB/index|actions|components|selectors
/src/js/modules/moduleC/index|actions|components|selectors
見下面,我公開一個循環依賴不起作用的例子!
所以,這裏是一個模塊化如何公開API(模塊本身以外的出口時所能完成的工作):
// src/modules/foobar/index.js
import * as actions from './actions'
import * as components from './components'
import * as containers from './containers'
import * as constants from './constants'
import reducer from './reducer'
import * as selectors from './selectors'
export default { actions, components, containers, constants, reducer, selectors }
這裏的進口:
// src/modules/foobar/containers/index.js
import API from '../index.js'
// this is undefined
console.log('API', API)
的目標是什麼?
ModuleAPI.actions.foobar()
ModuleAPI.containers.foobar()
雖然我可以看到,它可能是一個壞的做法(但說實話,似乎常理,一個文件無法導入本身)我想明白爲什麼這是不可能的!
- 只是找到了一個很好看的這個(https://medium.com/content-uneditable/circular-dependencies-in-javascript-a-k-a-coding-is-not-a-rock-paper-scissors-game-9c2a9eccd4bc)
- 可能是值得研究https://www.npmjs.com/package/circular-dependency-plugin
你用什麼模塊加載器?很確定ES6規範允許循環依賴沒有問題。 – CodingIntrigue
Webpack最新@CodingIntrigue – punkbit
您是否在真實瀏覽器中嘗試過您的示例? Chrome,Firefox,Safari TP和Edge都支持本地模塊(其中一些支持標誌)。 – nils