Deno provides a great set of features that make building your application a lot smoother than your standard node project. The control you get from the initial extracting of packages allows for circle references and other nasty bugs to be less of an occurrence. Instead of having to learn each native node module we now can focus on one doc to get the majority of things done like creating new files or fetching data. Integrating with other node packages can still be done to incorporate mixed modules if needed so you are not completely locked in to the deno-land eco system for your next project. In deno at the top level everything is async which allows for minimal boilerplate for simple stand alone methods.
One of the things that make deno fast is that it is built with v8 and tokio. Tokio is a async runtime for rust for interacting with the network that has zero-cost abstractions allowing bare-metal performance. Bellow is a picture comparing the HTTP server throughput amongst the top runtimes. There are many metrics to look at but, heres one of the main ones in when deciding what to use when it comes to HTTP, the bigger the number the better for the chart below.
Real World Production Example
Here is a real world getting started repo that is production docker ready using oak middleware to help create a REST API in deno. The app is set to launch on ECS Fargate to scale at the systems level and at the application level has security in a couple layers with a ready to go custom instances of mongo, redis, and meilisearch. The application has middle-wares to abstract concerns from validation, spam protection, body-parser, error-handling, redirects and more. The app also has a basic suite of test and automation with circleci to help with keeping things reliable. Checkout the benchmarks folder to get a gist of the speed for a couple of key metrics like concurrency.
If you are coming from typescript getting started with deno is fairly straight forward after learning how to structure the application since the concepts of index.js is frowned upon. Theres a couple of overall project setup differences like establishing a
dep.ts to control all of your application dependancies instead of
package.json. Getting started with Deno can be a little confusing since theres a lot of different pieces to bring together that make the Deno runtime environment, if you need help try looking at the deno-manual.