我有一个复杂的服务器端节点模块,文件夹形式:
store
|-index.js
|-accounts
|-index.js
|-consumer.js
|-provider.js
|-site
|-index.js
|-portal.js
|-etc.
其中,在site/index.js
我正在初始化一个数据库上下文,所有子模块都可以访问(accounts
,site
等)和export
所有子模块子模块接口,如:
import dbdriver from 'mydbdriver'
import settings from './settings'
const db = dbdriver.connect(settings)
export * from '../accounts' // depends on db
export * from '../site' // depends on db
我曾考虑通过参数污染子模块API(即要求将上下文传递给所有相关的调用),但这很难看,IMO。
另一个想法是为每个模块设置一个初始化程序,它可以接受模块范围全局中的上下文和现金,这对于每个文件都是必需的(再次,yuck。)
是否有更清洁,优雅的方式来接近这个?
答案 0 :(得分:0)
你可以这样做。
定义db/index.js
import dbdriver from 'mydbdriver'
import settings from './settings'
const db = dbdriver.connect(settings)
export db;
和site/index.js
import db from db/index
export * from '../accounts' // depends on db
export * from '../site' // depends on db
//use db here
这样,只要您想使用db
,就需要导入db/index