我目前在一个库中工作,该库针对不同的javascript运行时环境(即节点,现代浏览器)。因此,我有一个npm项目,与babel一起编写ES6代码,将其转换为在节点中运行并执行测试。
现在我遇到了必须针对不同目标平台编写模块的情况,例如我需要使用Web Audio Api(在节点中不支持)来生成一些声音。我的想法是创建一个模块(例如sound.js),该模块提供统一的接口,无论针对哪个目标平台,但具有与运行时环境相对应的依赖项。另外,由于具有不同的依赖性,我必须在sound.js中提供不同的实现,据我所知,这被称为匀场(或适配器模式)。下图说明了我关于此过程如何工作的想法:
-- src
-- modules
-- sound.js
...
-- node_modules
-- webAudio
-- nodeAudio
内部sound.js
...
// if target == web
import * from 'webAudio'
// if target == node
import * from 'nodeAudio'
...
function playSound() {
//if platform == 'node'
nodeAudio.play()
//if platform == 'browser'
webAudio.play()
}
在这一点上,我对JavaScript世界中的跨平台开发世界不知所措。据我了解,我会将webpack添加到babel中,并为每个平台捆绑不同的dist /软件包。但是我没有找到任何有关如何实现sound.js垫片的资源。所以...
这个概念是否是构建跨平台库的可行方法,如果没有,我在哪里可以找到有关此场景的资源?