Deno — A First Look

CodingHub
4 min readAug 7, 2020

--

Deno! What an interesting name. A new thing which is in hiped these days. Curious to know more? let's jump into this…

A secure Javascript and Typescript runtime combined, simplified, and named as DENO. It builts in RUST programming language, TOKIO asynchronous runtime for Rust and uses Chrome’s V8 engine.

Let's install it

Deno installation is pretty simple. See below. if you are in macOS or Linux

curl -fsSL https://deno.land/x/install/install.sh | sh

Then copy the export line and add it to your ~/.bashrc or ~/.bash_profile. Open a new terminal and

deno --version

If you are in Windows, just open the power shell and run the following

iwr https://deno.land/x/install/install.ps1 -useb | iex

Now

deno --version

Your First Deno Code

Deno supports javascript & typescript both so you can try the following… Open any editor of your choice, create a file, say, “welcome.js” or “welcome.ts” and write this code:

console.log("Hello World!");

Now, its time to execute the code and let see what is happening.

deno run welcome.ts

Hello World!

deno run welcome.js

Hello World!

Permissions in Deno

One of the important and outstanding features of Deno is Security and how it is implemented. Deno doesn’t have any access to your file system, network. You have to allow Deno explicitly while running a program.

Let’s see what it means by this example. Like, node let’s create a simple server in Deno…

import { serve } from "https://deno.land/std/http/server.ts"; 
const s = serve({ port: 3000 }); console.log("http://localhost:3000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}

Let's understand the lines one by one. Ok?

At the very 1st line, we have 2 new things to understand. Number 1, we have an importing statement. Meaning we don’t need to install anything for this program to execute as we did for Node. So there will not be any node_modules in our local system.

Number 2, it actually importing an HTTP server from Deno’s library via URL. Meaning we have to use your network to execute this line. Right? Without a network, you won’t be able to access anything via the internet. Aha! What a beauty. Without your permission, Deno will not be going to access any URL via your network. Sounds great! Isn’t it? Now coming to the 2nd line, here we create a server and alow a port to act upon. Then, it will be running a loop to serve requests from the server. One interesting thing we can find here is await. Pretty simple right! And by the way, save it by any name, let say server.ts or server.js whatever you want. Now we will execute this program by running the below command

deno run server.ts

After running this program you will see an output like…

error: Uncaught PermissionDenied: network access to "0.0.0.0:3000", run again with the --allow-net flag at unwrapResponse (rt/10_dispatch_json.js:25:13) at sendSync (rt/10_dispatch_json.js:52:12) at opListen (rt/30_net.js:33:12) at Object.listen (rt/30_net.js:204:17) at serve (server.ts:287:25) at server.ts:2:11

Here you can see the error it clearly shows the program will not be able to access the URL via the internet. Now we need to apply the security options. Here we will use — allow-net flag. By this flag, it will allow Deno to access the network to reach that URL. So, the whole command will be.

deno run --allow-net server.ts

Now you click on http://localhost:3000 it will show you the message Hello World Lets find out the flags Deno will use for permissions — allow-env allows environment access — allow-net allows network access — allow-plugin allows plugins access — allow-read allows file system read access — allow-run allows running subprocesses — allow-write allows file system write access — allow-all allows all permissions

Now Deno does one interesting thing, it first loads the modules from the URL and it will cache it in your system. Interesting isn’t it. Next time you can reload the module from the cache. You just pass -reload flag.

deno run --reload --allow-net server.ts

Summary

We are now happy to see the first look of Deno. Is it useful to you? If so, please leave a comment at info@codinghub.net and share this article as much as you can. This is just the begining. There are lot more to come. Stay connected with us. Thank you very much!

We are on Facebook, Twitter, Quora, etc.

By the way, want to learn more about Deno? Just check out the official Deno documentation.

Originally published at https://codinghub.net.

--

--