Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建跨平台javascript库_Javascript_Webpack_Cross Platform_Babeljs_Shim - Fatal编程技术网

创建跨平台javascript库

创建跨平台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中提供不同的实现,据

我目前正在开发一个库,它针对不同的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任务以进行测试和筛选