I don't know why others down voted you so I upvoted this comment.
All I am saying is that the d3 team needs a "getting started" page aimed at allowing a dev to include one script tag (or a single npm install) and then copy and paste examples from the example gallery to get it quickly working on their own test website.
I recently tried getting back into d3 and I gave up (opted for another low threshold SVG toolkit). It's fine if d3 is aimed at other people who want to use observable.... It's just not targeted at me anymore.
I think that's actually a result of how D3 has changed over time. It has become much more modular and flexible, but also less "plug & play". In a sense it's a pro tool for custom data visulaisations, where everything is possible, but nothings easy.
It also works as a pure JS library, just like D3, but is based on a grammar of graphics idea, like ggplot.
It's not infinitely flexible, but flexible enough, and build to get quickly to a chart, with as few lines as possible.
I guess it depends on your goal. If your goal is to learn how to code a nice reactive environment like a notebook is great. If your goal is to learn how to take a library and use it in a piece of software to release to the world, the notebook is next to useless.
If you think that the trivial differences between the two environments makes either of them useless to learn the other, franky I'll doubt you'll have the skill to learn D3 properly at all.
Taking a dom node and hooking it into the dom is not magic in D3. All that obervable does is hook in any dom node you return for you.
I wasn't sure whether I was going to comment, but this kind of comment is rather unhelpful and poor form. Some may prefer not to have a (mock) notebook runtime in their application for good reason that has nothing to do with their skill.
I see you are passionate about defending Observable, and that's cool - it's a great piece of tech, but please remember that everybody's requirements are different and valid too.
Then don't use the runtime and rewrite the code to plain js. All you have to do is declare cell contents as variables, and replace the first D3 select, that attaches to a reified dom node, with an #id selector. D3 is a series of tools, where the difficult parts are completely orthogonal to what observable provides.
It's like complaining that you can't learn how to drive in the evening, because there is a different sky color, than during the time you'll take your morning commute. The sky color is not the relevant nor difficult part.
I have my own (different) complaints about observable, but I'm sick and tired of bottom of the barrel programmers complaining about free stuff not being pre-digested enough for them.
That's like trying to force every vim user into Jetbrain IDEs (both are great, not trying to start a flamewar here).
Sure an IDE will have more features (like Observable vs simple HTML file), but it's important to understand different people have different ways of doing things.
We're talking about a javascript repl here, don't blow it out of proportion. The things transfer trivially between the envionments. If having a javascript repl is such a show stopper for learning D3 for you, maybe learn javascript first.
But if the example transfers trivially, why is there no convenient "download example project" button that offers an archive containing all the necessary files I need to run the example?
All I am saying is that the d3 team needs a "getting started" page aimed at allowing a dev to include one script tag (or a single npm install) and then copy and paste examples from the example gallery to get it quickly working on their own test website.
I recently tried getting back into d3 and I gave up (opted for another low threshold SVG toolkit). It's fine if d3 is aimed at other people who want to use observable.... It's just not targeted at me anymore.