2017-10-11 60 views
0

我有安裝這樣的2個subapps:快遞subapps通信

//server.js 

app.use('/am/api', subapp1) 
app.use('/ucm/api', subapp2) 

每個subapp返回明確路由器的實例,例如:

//subapp1 
var express = require('express'); 
var router = express.Router(); 

router.route('/msgs/:msg_id') 
    .get(fn); 

export default router 


//subapp2 
var express = require('express'); 
var router = express.Router(); 

router.route('/users/:user_id') 
    .get(fn); 

export default router 

我想使這些子應用程序彼此交談,就像subapp1需要來自subapp2的數據一樣。有沒有最佳做法如何做到這一點?我不希望這些子應用程序之間存在任何文件依賴關係。我需要一個乾淨的界面。

+1

什麼是不潔有關共享放在單獨的文件中共同的代碼?其他的解決方案,比如'subapp1'向'subapp2'發出請求,將會不那麼幹淨。 – robertklep

+0

將來我會發現每個子應用程序可能會增長並可以作爲微服務分離。如果他們依賴於彼此的文件,這將是困難的,但如果他們通過一個接口進行交談,它會更好。今天,它們可以共享文件,明天它可以通過休息呼叫。 – maxcc00

回答

0

我認爲最好的解決方案是分離服務,並在此服務內進行通信。例如:

service.js:

const service = {}; 

service.action1 = function() { 
    console.log('Communication with subapp2.'); 
} 

service.action2 = function() { 
    console.log('Communication with subapp1.'); 
} 

module.exports = service; 

在路線:

const service = require('./service'); 

subapp1 = function() { 
    service.action1(); 
} 

subapp2 = function() { 
    service.action2(); 
}