With Arrival of Deno should we bid farewell to Node.Js?
Here it is eventually, after a lot of excitement, there it is Deno, v1.0.0 was launched as of May 13, and in this post, we decided to delve into Deno and state some important information that might play a role in the future of Node.js.
What is Deno?
Deno is a JavaScript and TypeScript runtime that is based on the V8 JavaScript engine and written on the Tokyo platform in the Rust programming language (which provides the asynchronous runtime needed by JavaScript).
It was developed by the original developer of Node.js, Ryan Dahl. “In 2018, during his talk “10 Things I Regret About Node.js” it was revealed by Dahl and is meant to address implementation bugs in Node.js. Instead of requiring a separate package-management program, Deno specifically takes on the function of both runtime and package manager within a single executable.
Deficiencies in Node.js architecture
Node.js suffers from three big design challenges, according to Dahl:
- Poorly built, centrally distributed module system;
- Numerous legacy APIs that need to be supported;
- And a shortage of protection.
Deno is planning to resolve all three questions…
The fact that the Node.js API is callback oriented is also important to note, since it was written prior to promises and async/await. There is no change in place in Node for that, as such a change would be monumental, but we’re simply left with callbacks or enticing API calls.
Deno is really similar to Node.js and does a lot of stuff that the node does, but with a lot of benefits. So, here are the benefits of Deno:
1)Deno is constructed in TypeScript
One of Deno’s greatest advantages is that it has TypeScript support. You don’t have to customize your TypeScript environment manually, you can use it right out of the box with Deno’s compiler and all built-in, so you don’t have to think about any configuration of TypeScript. All is there for you!
2) Browser stability & Imports of the module
So if you want to retrieve a resource for example in node.js, you have to import a library to do so, you just use fetch when in the browser. You will also find that all of the APIs running on the Node, all use callbacks instead of using Async/Await. So they’ve scratched all the old code in Deno. So all in Deno is going to be based on promises and on Async/Await.
And on top of that, when you import a package instead of using ‘require(module)’ in the standard Node.js way, you can actually import stuff using ‘import/export’ syntax depending on the browser on ES6. This helps one to do things in a similar manner as we can in the browser. On top of that, all the Deno-based web-based APIs can be run using Deno in the browser or outside the browser, and this is really Great!
In addition to the compatibility of the browser, Deno takes things a bit further, providing a library with a lot of helpful packages that are typically not supported by the browser. Therefore, without caring about browsers, we have to adopt a common library. Oh My God! How amazing is that!
3) Safety and Security
As its first concept, Deno is focused on Security. So, without authorization, Deno scripts can not access the hard disk, open network links, or execute any other remotely malicious acts. Deno provides one with a ‘—allow-net’ command-line flag to enable access to all additional script permissions.
If you upload a package and somehow it is manipulated or corrupt or includes bad code that will corrupt your files or erase all the data on your machine, if you run the Node.js package-containing script, you will certainly lose everything on your computer, it can uninstall all except in Deno, unless you specifically grant your program the power to remove files from your device. Your software would not be able to do anything like that without your authorization, allowing your program the power to erase files from your computer. So Deno cares about your security, in actual sense!
4) Management of Packages
With node.js, to handle your packages, you get npm. But in Deno, you can install or explicitly use packages directly from the URL by importing the package from the URL as a library in your script.
There is no ‘package.json’ dependency management file on top of that and there is no ‘node modules’ archive, all of which is managed by Deno in the context and maintained as a central dependency on the machine. So to use packages, you don’t have to think about the massive node modules folder or package.json archives. Workspace Cleaner than ever before!
Deno’s highlights:
- Deno is a runtime for running JavaScript and TypeScript in a single executable outside the browser.
- By default, Deno is stable, with no access to a file, network, or environment unless expressly allowed.
- Deno is dying of uncaught mistakes.
- In Deno, all asynchronous acts return a pledge.
- It is possible to package the Deno scripts into a single JavaScript format.
- Deno has integrated utilities such as a dependency inspector (deno info) and a formatter code (deno fmt).0
- A list of audited standard modules is supported by Deno.
- Deno was created as a series of Rust crates to enable multiple levels of integration.
- Deno is based on the latest JavaScript language features.
- Deno has a comprehensive library that is standard.
- At its heart, Deno has TypeScript, which offers a massive benefit in several different areas, including first-class TypeScript support (you don’t have to compile TypeScript separately, Deno does it automatically).
- ES modules are embraced by Deno.
- Deno does not have a kit manager.
- Deno’s looking for a first-class.
- Deno as a research facility established.
- Deno strives to be as consistent with the browser as possible, such as by having a built-in fetch and the global window object.
Now, what’s happening with Node.js?
Good. Well. Node.js is a giant, used by millions, present in millions of libraries, well-established, extremely well-supported technology with a wide community, no doubt about it, that will remain for a very long time.
Should one get used to Deno?
It’s difficult to learn something new, but it’s also important for any developer to continue learning new things. Our recommendation would be that if you start with server-side JS right now and you don’t know Node yet and have never written any TypeScript, you’d better start with Node.js. But if you’re familiar with Node.js and TypeScript, we think it could be time for a minor shift, and moving into Deno in the long run can be very promising and helpful from the beginning.
Wrapping Up:
Node.js is amazing and will certainly continue to be the JavaScript world’s de facto standard. But due to its first-class TypeScript support and current standard library and many other features, it is highly likely that we will eventually see Deno more embraced.
But in exchange for all the good and enjoyable stuff it provides, to be frank, there would be a massive debt to migrate current npm modules and codebases, which we think is the biggest restriction so far.
So, What do you think about Dahl’s Deno?