繁体   English   中英

正确的ES6与子模块共享全局方式

[英]Proper es6 way of sharing global with sub-modules

我有一个文件夹形式的复杂服务器端节点模块:

store
  |-index.js
  |-accounts
      |-index.js
      |-consumer.js
      |-provider.js
  |-site
      |-index.js
      |-portal.js
  |-etc.

site/index.js我正在初始化一个数据库上下文,该上下文应可供所有子模块( accountssite等) 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这很丑。

另一个想法是为每个模块都有一个初始化程序,该初始化程序将接受上下文并在模块范围的全局变量中兑现,这对于每个单个文件都是必需的(再次,是uck废)。

有没有更干净,更优雅的ES6方法来解决这个问题?

你可以这样

定义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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM