Good. A reduction in dependencies and tooling. Once matured, no more: isomorphic fetch, pkg, nodemon, mocha/jest. Now if we can do the same for webpack and typescript, that would be great. There must come a day when a developer can bootstrap a reasonably sized Node project with just the built in tooling.
Deno does this by default, plus you can use npm packages in Deno as well. It also has a compile option that turns the entire project into a binary you can deploy, which is great to not have to ship source files and run them with Node as is usually the case.
For the frontend, Vite works well, and NextJS if you're using React in particular.
This is why I’m excited about Bun. I’ve built a handful of 0-dependency utility web apps (internal company tooling) with it. It’s early days, but it’s already quite good.
I don’t think I’ve gotten free performance since Node 12. There’s a little juice in Node 16 for async code and certain class patterns but those are mostly avoiding penalties, not getting new benefits.
We’re supposed to be thrilled about a years old API finally landing in Node? A built-in test system when there’s so many great choices by not being batteries included? A standard update to catch up to the latest Chromium?
Other than the fourth point (yay a better watch mechanism!) this actually persuaded me to think that maybe Node is stale.
Well… not stale. Stable. Maybe at my ripe old age of 36 I’m a curmudgeon, but I think it’s fine to just focus on maintenance mode and following the browser for API and feature guidance.
This is a slight misnomer in my opinion. When those dependencies are bundled into Node you have fewer listed dependencies, yes, but you haven't actually reduced the amount of external code you rely on.
You have a single vendor to worry about— like Microsoft when you use .NET, Google when you use Go, etc. You obviously will always have external dependencies unless you build everything from your own hardware up. But it’s clearly a win to vet and trust one vendor, and have one solid, trusted platform to build on vs pulling in literally thousands of dependencies from random vendors as is common in most JS stacks.
That's a fair point. Currently I'm not convinced all of this is the right direction for Node, but we'll see how it pans out. Node is already huge so I would much rather they pick their battles and do those features well, rather than try and be mediocre at everything.
Yea for real. I’m sure there’s tons of reasons why it took so long, there’s gotta be some devil in the details. Maybe the standards compliance, complexity of the code base, something something “ecosystem”, all the above…
Feels like a similar situation to CJS/ESM, which is still a headache in Node regardless of its support
Test runners have been super requested lately in the Node GitHub issues. I have not understood why that is because writing a test running of your own is trivial.
For the frontend, Vite works well, and NextJS if you're using React in particular.
Uncaught: SyntaxError: Cannot use import statement inside the Node.js REPL, alternatively use dynamic import
import test from 'node:test'; ^^^^^^
SyntaxError: Cannot use import statement outside a module
import test from 'node:test'; ^^^^^^ error: Unsupported scheme "node" for module "node:test".
This whole import / require / ... debacle is what drives me away from JS the most
It's typescript, web standards only (no require, top-level-await, no module messaround), and built-in test runner from the start.
https://user-images.githubusercontent.com/3397140/86506040-a...
I certainly wouldn't want this because of the huge number of dependencies.
Watching a src directory is usually the way to go.
We’re supposed to be thrilled about a years old API finally landing in Node? A built-in test system when there’s so many great choices by not being batteries included? A standard update to catch up to the latest Chromium?
Other than the fourth point (yay a better watch mechanism!) this actually persuaded me to think that maybe Node is stale.
Well… not stale. Stable. Maybe at my ripe old age of 36 I’m a curmudgeon, but I think it’s fine to just focus on maintenance mode and following the browser for API and feature guidance.
Even if Deno, Bun etc were to fizzle out, I am glad they exist to show the way and put pressure on Nodejs at bare minimum.
This is how I felt about io.js back in the day too, and about vim versus neovim; competitive pressure works.
Feels like a similar situation to CJS/ESM, which is still a headache in Node regardless of its support
The bookkeeping isn’t hard, but the matchers and the lifecycle bits get tricky.