Сверните js: как сделать замыкание типа d3? - PullRequest
0 голосов
/ 09 мая 2018

Большая часть того, для чего я использую javascript, - это d3, а остальная часть моего знания javascript была самообучена, когда я смотрел на примеры, читал документы и т. Д. Суть в том, что мои "глубокие" знания javascript не так глубоки ... .

Поскольку я в основном работаю с d3, я написал много своих собственных функций и замыканий (как предложено Бостоком в На пути к многоразовым диаграммам ), которые основаны на d3.

Чтобы отследить весь код, который я написал для них в отдельных файлах, и использовать свою коллекцию, я попробовал несколько способов, таких как динамическое добавление тегов скрипта к заголовку документа, объединение файлов и т. Д.

В идеале, я должен сделать правильный модуль своего кода и собрать его вместе.

Итак, я отправился на этот путь и наткнулся на свертку, и этот урок от Ленгстрофа.

Я попытался следовать ему и заставить его работать с некоторыми незначительными изменениями (например, предполагается, что babel-core уже установлен, и в настоящее время существует проблема с postcss.

В любом случае, я сделал небольшое репо, чтобы продемонстрировать свой вариант использования ( проект репо ). Он имеет несколько модулей, которые включают вспомогательные функции, некоторые прототипы и некоторые замыкания.

В идеале все они должны быть экспортированы в замыкание / объект, как d3 (например, myClos), где я мог бы затем вызвать любую из написанных мной функций.

К сожалению, я понятия не имею, как это сделать, и не нашел соответствующих примеров / руководств о том, как это сделать. Кроме того, при этом я должен был бы затем вызывать мои вспомогательные функции, такие как myClos.helper1().

В любом случае, я был бы очень признателен за вашу помощь. Идеальным завершением было бы, чтобы свернутый файл myclos.min.js работал как d3, где я включаю тег сценария, а затем myclos находится в global-namespace.

Заранее большое спасибо за помощь.

1 Ответ

0 голосов
/ 10 мая 2018

Убедитесь, что вы используете соответствующий формат для импорта / ссылки на ваши внешние помощники / модули (например, из вашего файла main: (esmodules) import foo from './helper1'; console.log(foo.helper1()) или (commonjs) const foo = require('./helper1'); console.log(foo.helper1()).) В модуле, который вы пытаемся экспортировать из (helper1): (esm) export default helper1, (cjs) module.exports = helper1. Сводные документы имеют хорошие примеры этого.

...