Создание кроссплатформенной библиотеки javascript - PullRequest
0 голосов
/ 05 марта 2020

В настоящее время я работаю над библиотекой, которая ориентирована на различные среды выполнения javascript (а именно на узлы, современные браузеры). Поэтому у меня есть проект npm, с babel для написания кода ES6, транспорта для его запуска в узле и выполнения тестов.

Теперь я сталкиваюсь с ситуациями, когда модули должны быть написаны для разных целевых платформ, например, мне нужно использовать Web Audio Api (который не поддерживается в узле) для генерации некоторых звуков. Моя идея состоит в том, чтобы создать модуль (например, звук. js), который обеспечивает единый интерфейс, независимо от того, для какой целевой платформы, но имеет зависимости, соответствующие среде выполнения. Кроме того, с разными зависимостями я должен предоставить разные реализации внутри звука. js, как я понимаю, это называется шиммингом (или шаблоном адаптера). Рисунок ниже иллюстрирует мою идею о том, как работает этот процесс:

-- src
  -- modules
    -- sound.js
       ...
  -- node_modules
       -- webAudio
       -- nodeAudio

Внутренний звук. 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 / пакеты для каждой платформы. Но я не нахожу никаких ресурсов о том, как подходить к реализации звука. js Шим. Итак ...

Является ли эта концепция выше жизнеспособного подхода к созданию кроссплатформенной библиотеки, и если нет, где я могу найти ресурсы по этому сценарию?

...