创建跨平台javascript库
我目前正在开发一个库,它针对不同的javascript运行时环境(即节点,现代浏览器)。因此,我有一个npm项目,使用babel编写ES6代码,将其传输到节点中运行并执行测试 现在我遇到的情况是,必须为不同的目标平台编写模块,例如,我需要使用Web音频Api(node中不支持该Api)来生成一些声音。我的想法是创建一个模块(例如sound.js),它提供了一个统一的接口,无论是针对哪个目标平台,但具有与运行时环境相对应的依赖项。此外,对于不同的依赖项,我必须在sound.js中提供不同的实现,据我所知,这称为填充(或适配器模式)。下图说明了我对该过程工作原理的看法:创建跨平台javascript库,javascript,webpack,cross-platform,babeljs,shim,Javascript,Webpack,Cross Platform,Babeljs,Shim,我目前正在开发一个库,它针对不同的javascript运行时环境(即节点,现代浏览器)。因此,我有一个npm项目,使用babel编写ES6代码,将其传输到节点中运行并执行测试 现在我遇到的情况是,必须为不同的目标平台编写模块,例如,我需要使用Web音频Api(node中不支持该Api)来生成一些声音。我的想法是创建一个模块(例如sound.js),它提供了一个统一的接口,无论是针对哪个目标平台,但具有与运行时环境相对应的依赖项。此外,对于不同的依赖项,我必须在sound.js中提供不同的实现,据
-- src
-- modules
-- sound.js
...
-- node_modules
-- webAudio
-- nodeAudio
Inside 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领域中的跨平台开发世界吓坏了。据我所知,我会将网页包添加到babel,并为每个平台捆绑不同的dist/包。但是我没有找到任何关于如何实现sound.js shim的资源。所以
上述概念是否是构建跨平台库的可行方法?如果不是,我在哪里可以找到有关此Scenario的资源?TL;DW我最终使用了本文中提到的不同方法
主要是浏览,以填充依赖项,并添加各种grunt任务以进行测试和筛选。TL;DW我最终使用了本文中提到的不同方法 主要是浏览以填充依赖项,并添加各种grunt任务以进行测试和筛选