DEV Community

Cover image for From Node to Deno

From Node to Deno

Aral Roca on May 17, 2020

Original article: https://aralroca.com/blog/from-node-to-deno Last week I published an article about Deno, and how to create a Chat app with Deno ...
Collapse
 
yuripredborskiy profile image
Yuri Predborskiy

I'm afraid I'm missing something:
Deno doesn't have npm, right? So if I want a third party library, I have to go find it, grab the url, download it, and add it manually? Or use a URL, and if URL changes, I have to do the same thing again from the start?

I just don't see much point in Deno at this point, it takes one of the biggest advantages of Node, throws it out the window and declares itself the winner... and I just don't get it. From what I've read the author is proud with the fact deno has smaller and more predictable latency (from receiving request to answering request) but... handles 2/3 of node's requests per second, so we lose 1/3 of the performance for a bit of latency, and that is, like, one of the biggest advantages.

As I said, I just don't get it. If anyone can explain what is Deno supposed to replace or what problem it wants to solve, I'd be very grateful. Thanks in advance!

Collapse
 
maskedman99 profile image
Rohit Prasad

Anything that gets rid of the bloated node_modules folder is a win for me.

Collapse
 
yuripredborskiy profile image
Yuri Predborskiy • Edited

I'm not a fan of all the bloat either, but it doesn't seem like we can change much, other than pulling all that code directly into our project and bloating the project files instead.

And then again, deno gets rid of bloated node modules folder how? By creating deno crates or something? My guess is it will be just as bloated very soon. It is a side effect from the ecosystem that relies on updateable plug-ins which use other plug-ins.

Thread Thread
 
quantumfillet profile image
QuantumFillet

Where would the bloat come from? Managing dependencies is as easy as creating a single typescript file with all the imports and Deno does the rest. No need to deal with node_modules. Here is a github issue discussing your grievances

Thread Thread
 
yuripredborskiy profile image
Yuri Predborskiy

This talks a lot about all the issues I have with deno way. Sadly, the discussion is simply closed without an answer.

Thread Thread
 
quantumfillet profile image
QuantumFillet

How about this reply

P.S. I'm not here to convert you to Deno xD, but if you dislike the idea of learning another technology in the already overwhelming web dev environment then I totally get where you are coming from.

Collapse
 
imichael profile image
✨iMichael✨ • Edited

Thanks for writing this up. Do you know if there a way to define a common host name for imports? From an aesthetic POV, this looks jarring to my eyes.

import { Client } from "https://deno.land/x/mysql/mod.ts";

It would be nice to do this instead

import { Client } from "mysql/mod";

and let some manifest or configuration flag handle the rest.

Collapse
 
aralroca profile image
Aral Roca

Yes! Deno supports import_map.json

References:
deno.land/manual/linking_to_extern...
wicg.github.io/import-maps/

Collapse
 
dels07 profile image
Deli Soetiawan

And there's might be a tool to manage this similar to npm in future

Collapse
 
max profile image
Maxime Lafarie

Nice post tho! 😉

Collapse
 
dels07 profile image
Deli Soetiawan

Like node will not replace php in past or more like rust will not replace c++ (in some area)?
I bet we will replace node when we (or big company) know what benefits and problem deno can solve, right now we don't see many benefits except for sandbox compared to node.

Collapse
 
wilsonuponsea profile image
Aoibhe Wilson 🇨🇭

What happens if one of your deps loses their URL or moves things around without warning? Is there any sort of central repository or cache?
I think I‘ve seen that the import map should be used to avoid having to update an import in a bunch of files so I suppose it’s not horrible to have to fix. Just seems like a risk.

Collapse
 
dels07 profile image
Deli Soetiawan

Deno will cache your deps in first run so it's available offline, similar to golang did before go mod

Collapse
 
uzitech profile image
Tony Brix • Edited

Is there anything preventing a left-pad situation?

Collapse
 
muuvmuuv profile image
Marvin Heilemann

Great article!!! I really think Deno will change the JS world forever and it was about the time to refactor NodeJS. I hate that we have yarn, npm etc (big fan of pnpm btw.) and everything is centralized and controlled by a company (npm inc.). This really explains some migration very good! I would love to see more like this in future and how e.g. Node libs are included and that Deno should change our thinking of building Node applications. Especially because it has some adoption from Go/Rust world and is TypeScript by default.

PS: add github.com/alosaur/alosaur/ to the framework section, it is a pretty solid alternative to nestjs.

Collapse
 
alvarezgarcia profile image
Alvarez García

Excellent compilation!.
I am starting with deno, specifically focusing on the very lightweight webview implementation (and in fact a nice way to learn internals)

Just one little thing in the webview section for the macOS users, just today the error when using directly an HTML string was fixed, wrapping the string with encodeURIComponent()

Collapse
 
matthewadams profile image
Matthew Adams

You say "To use Deno as a lambda, there is a module in Deno STD library. deno.land/x/lambda."

FYI, deno.land/x is NOT the standard Deno library. In fact, there was noise on the #dev deno.land Discord channel about getting rid of deno.land/x because they're against centralization.

Collapse
 
matthewadams profile image
Matthew Adams
Collapse
 
craigmorten profile image
Craig Morten

Amazing article! One of the challenges with Deno atm is module discovery - it can be frustrating trying to find if an equivalent module exists!

One to consider for the list - I’ve ported Express over to Deno and Typescript in a framework called Opine github.com/asos-craigmorten/opine. It’s a port so honours the original internals and API (except where Deno deviates from Node)

Collapse
 
yanai101 profile image
yanai

thanks 😊

Collapse
 
emauricio profile image
Mauricio • Edited

It would be nicer to have a more personal experience rather than linking things you can get from easy
github.com/denolib/awesome-deno examples.
in any case thank you.

Collapse
 
aralroca profile image
Aral Roca

The first article I wrote was a personal experience implementing a chat with Deno + Preact: aralroca.com/blog/learn-deno-chat-app. If It's what you are looking for.

Collapse
 
threkk profile image
Alberto de Murga

It is impressive the amount of progress for such a young project. Congratulations to the whole community!!

Collapse
 
dels07 profile image
Deli Soetiawan

How about husky?

Collapse
 
cibergarri profile image
Javier Garrido

From Node to Deno:
twitter.com/deno_land/status/12625...

:D Great article!

Collapse
 
vaviloff profile image
Vaviloff

Yaaaay, let's create a whole new ecosystem for ${this new trendy thing}!

Collapse
 
andrie profile image
Andrew

Deno DOES support npm packages using "npm:${package}" and express works as well.

Collapse
 
madhusudanbabar profile image
Krypton | Madhusudan Babar

Nice post