Можно ли использовать D3 с помощью Elm с помощью портов? Я пробовал Elm, но я не могу найти примеры использования Elm с D3 без API-интерфейса обертки. Проблема, с которой я столкнулся, заключается в том, что wrapper и вилки не работают с 0,18. Я также вижу много заявлений, которые предполагают, что создание API вокруг API-интерфейсов javascript является плохой практикой, и вместо этого вы должны использовать порты. Однако я не могу найти примеры этого с D3. Я нашел this example, но часть D3 была сделана на простом javascript, который не подходит.Использование D3 с Elm
Я, вероятно, слишком агрессивен, беря на себя D3 прямо на лету с Elm, но это действительно то, что я хочу с ним делать. Если это не реально использовать D3 с Elm, я, вероятно, сейчас не буду с этим обдумывать. Существует ли фундаментальная проблема с таким взаимодействием или это просто отсутствие интереса к D3 в сообществе Elm, или я просто что-то пропустил?
Например, возьмите этот код вырванные из примера bl.ocks выше:
var t = d3.transition().duration(750);
var g = d3.select("svg g")
// JOIN new data with old elements.
var text = g.selectAll("text")
.data(data, function(d) { return d; });
// ENTER new elements present in new data.
text.enter().append("text")
.attr("class", "enter")
.attr("dy", ".35em")
.attr("y", -60)
.attr("x", function(d, i) { return i * 24; })
.style("fill-opacity", 1e-6)
.text(function(d) { return d; })
.transition(t)
.attr("y", 0)
.style("fill-opacity", 1);
Есть ли простой перевод в Элм для такого рода вещи?
Вот пример работы с портами и большой библиотекой JS (Google Maps) HTTP: //simonh1000.github .io/2016/12/elm-ports-google-maps/Это может помочь вам –
@SimonH Спасибо за вашу помощь. Я смотрел на некоторые подобные вещи, но где я боюсь, так это то, что d3 использует множество ссылок на методы. Вам необходимо передать ему функции и вызвать функции, которые возвращают функции (которые также являются объектами). Я не знаю, как это сделать в Вязе, так что я надеюсь найти рабочий (простой) пример для начала. – JimmyJames
Можете ли вы представить пример кода, который вы должны пройти через порт. Разверните свой вопрос, чтобы показать, какую функциональность вы хотите получить в D3 от Elm –