D3.js è davvero basato sui dati?

0

In The Art of Unix Programming, Eric Raymond dice che lo stile basato sui dati riguarda la creazione di piccoli interpreti per "mini-lingue" per consentire il controllo del flusso di controllo del programma in fase di runtime.

Com'è collegato alla visualizzazione dei dati? Non sono riuscito a trovare nulla che riguardasse la creazione di DSL in D3.js

    
posta Jean-Michaël Celerier 14.11.2016 - 19:42
fonte

1 risposta

2

La libreria d3.js è un "DSL incorporato" . È incorporato (utilizzando la sintassi della lingua host javascript), in contrasto con una "DSL indipendente" , che corrisponde a ciò che Eric Raymond sta parlando di "The Art of Unix Programming".

Ed è un DSL, perché implica uno stile di programmazione diverso. In d3.js descrivi la relazione tra i tuoi dati e la visualizzazione desiderata, invece di creare loop su loop che prescrivono cosa fare dopo.

Per citazione dalla pagina d3.js :

Modifying documents using the W3C DOM API is tedious: the method names are verbose, and the imperative approach requires manual iteration and bookkeeping of temporary state. For example, to change the text color of paragraph elements:

var paragraphs = document.getElementsByTagName("p");
for (var i = 0; i < paragraphs.length; i++) {
   var paragraph = paragraphs.item(i);
   paragraph.style.setProperty("color", "white", null);
}

D3 employs a declarative approach, operating on arbitrary sets of nodes called selections. For example, you can rewrite the above loop as:

d3.selectAll("p").style("color", "white");

Vedi questo esempio di d3.js in natura . con javascript procedurale creerai diversi loop e selezioni e sottoselezioni, invece di descrivere cosa fare con quale parte dei dati.

Un altro fantastico esempio di DSL incorporato è "ggplot" di Hadley Wickham, nel linguaggio di programmazione R.

    
risposta data 14.11.2016 - 20:42
fonte

Leggi altre domande sui tag