2016-12-09 27 views
0

假設我們有一個像這樣聲明的模塊。對通過JavaScript導入或創建的模塊有反應ECMA2015

import Stuff from "./stuff"; 
export default { 
    things: { a: 1 }, 
    stuff: Stuff 
} 

然後,我們抓取它的另一個模塊,並使用如下所示。

import Donkey from "./stuff-and-things" 
console.log(Donkey.things.a); 
console.log(Donkey.stuff.whatever-field); 

我希望能夠對前者的進口反應到後者,所以,當將被創建(添加,合併,注入管它叫什麼),函數必火。

像這樣的僞代碼。

import Stuff from "./stuff"; 
export default { 
    constructor: function(){ console.log("I'm alive!"); } 
    things: { a: 1 }, 
    stuff: Stuff 
} 

是否有可能?我一直在googlearching一段時間,我什麼都沒發現 - 沒有建議如何也不否認它。可能地,由於對主題的無知,我一直在使用錯誤的術語。

回答

2

模塊導入時沒有通知的方法。我猜你可以做的是導出一個函數。然後,爲了對該模塊做任何有用的事情,該功能必須先被調用。

例如:

// stuff-and-things 
import Stuff from "./stuff"; 

const api = { 
    things: { a: 1 }, 
    stuff: Stuff 
}; 
export default function() { 
    console.log("I'm alive!"); 
    return api; 
}; 

// other 
import stuffAndThings from "./stuff-and-things" 
const Donkey = stuffAndThings(); 
console.log(Donkey.things.a); 
console.log(Donkey.stuff.whateverField); 
相關問題