Возможен ли в браузерах обменный код JS вместе с модулями, сгенерированными из C ++? - PullRequest
7 голосов
/ 14 мая 2019

На сегодняшний день существует какой-либо способ комбинировать нативные JS-скрипты с модулями, сгенерированными из кода C ++ (из Emscripten, chirp, clang-8 +, ..) таким образом, что позволяет обмениваться / модифицировать скрипт, пока повторное использование модулей (т.е. без необходимости их повторной обработки), которое работает как в браузерной среде Node.js , так и ?

Это было длинное предложение - позвольте мне датьпример:

Я хочу написать некоторый (скажем, test-) код на JavaScript, который использует библиотеку (скажем, foo), реализованную на C ++.

Моя текущая (рабочая) настройка выглядит следующим образомэто:

Браузер

                          test1.js \
                                    \
                                     ===(webpack)==> full.js
                                    /
foo.cpp  ==(emscripten)==>  foo.js /

Node.js:

foo.cpp ==(gcc/N-API)==> foo.node <--(require)-- test1.js

Проблема с подходом браузерачто (AFAIK) мне приходится перезапускать WebPack каждый раз, когда я изменяю / обмениваю test1.js, чтобы перенести изменения в браузер.

В моем случае выполнение webpack может занять много времени, и полученные артефакты довольно велики (кратны 10 МБ).Также я хочу запустить код на относительно небольших устройствах, на которых нет WebPack, поэтому мне даже приходится каждый раз передавать эти артефакты на устройства.

Так что теперь я хотел бы сохранить предварительно обработанный артефактсодержащий мой модуль foo (как бы это ни выглядело) в одном месте (например, на устройстве) при обмене только относительно небольшим собственным кодом JavaScript (test1.js).(Представьте себе тестовый сценарий с сотнями test*.js файлов, выполняемых подряд)

С современными браузерами / инструментами, ES6, ESM или любым другим подходом, о котором вы можете подумать - есть ли способ сделать это для браузеров?

Бонусные баллы переходят к ответу, который позволяет мне писать код, который я могу использовать в браузерах Node.js и без изменений ..:)

Мои извинения: этоэто модификация этого вопроса, когда я даже хотел обойтись без WebPack, но теперь я снизил свои ожидания ..

...