Deno is a JavaScript/Typescript runtime framework. Deno ships security and modern JavaScript features inbuilt to provide a great developer experience.
Before we proceed ahead with the article, let me say out loud a hype that is going around in the developer community.
Deno is similar to Node and at this stage is NOT a replacement of Node.
Don’t take my word for it, see what Ryan (Creator of Node and Deno) has to say about it.
So to clear out the doubts and hype,
Is deno a replacement of Node in production? NO
Is deno an alternative of Node in production? NO
Should we learn Deno as an alternative to Node? Sure
With that said, let’s check out Deno.
Features of Deno
According to the official website, Deno provides the following features out of the box.
- It’s built on V8, Rust and Tokio ( Rust runtime for writing Async operations ).
- Secure by default.
- Ships a single executable file.
- Supports modern JavaScript.
- Supports typescript out of the box.
- Uses ES modules.
Deno does not use NPM or node modules to manage the packages. Instead, we link third party packages using browser compatible URL.
Installing Deno
If you are using a Mac or Linux based system. Open your terminal and copy/paste the following command to install Deno.
If you are using Windows OS, just open the power shell and run this command.
Once installed, you can verify the installation by running the following command.
Let’s run our hello world program. Copy the command shown below and run it in your terminal.
You should see the following response.
As mentioned earlier, Deno produces a single executable file that can be run/import using the browser compatible URLs.
Permissions in Deno
Deno by default does not provide access to file system, network. You need to need to explicitly specify the permission you need to run your program.
Let’s learn it by building our first web server in Deno.
HTTP Server in Deno
Here is the example application from the Deno website.
const s = serve({ port: 3000 });
console.log("http://localhost:3000/");
for await (const req of s) {
req.respond({ body: "Hello World\n" });
}
In the first line, we are importing an HTTP server code from the URL. We don’t have to do typical npm install to install any modules.
In the second line, we are creating a server and providing a port in the configuration.
Then, we are running a loop to serve requests coming from the browser.
One thing to notice here is that we are using await without wrapping it in async. Deno provides top level await functions.
Save the code in the file with .ts extension. To run it, use the following command.
Deno will download the module and compile the typescript. But it will throw an error.
As I said, we need to provide permission to the program to access the network ports in the system. Run the command again with the following flag.
Now open your browser and navigate to localhost:3000, you should see a message in the browser.
Here are the flags that allow Deno to allow permissions:
- –allow-env allow environment access
- –allow-net=
allow network access - –allow-plugin allow plugins access
- –allow-read=
allow file system read access - –allow-run allow running subprocesses
- –allow-write=
allow file system write access - –allow-all allow all permissions
Deno loads the modules once from the URL and cache it in your system. To reload the modules again, you need to provide –reload flag before running the program.
Deno Standard modules
Deno provides rich set of standard modules. You can check out all of them here.
I am going to list a few frequently used modules here.
— datetime – date/time parsing module.
— fs – file system module.
— http – http server.
— hash – crypto module.
— uuid – generating random unique id module.
Deno third party module
You can find all the third party modules listed here.
Building a simple web app
We can use third party application like aqua to build a web server.
Consider the code below.
const app = new Aqua(3000);
app.get("/", (req) => {
return "Hello, World!";
});
Looks familiar? This is how we write code in Express-based web application.
Run the code.
Visit localhost:3000 to view the application.
Summary
Deno is fun, I must say that. Simplicity is baked in the architecture of Deno hence it’s effortless to get started and write a program.
We are going to write a few more articles on Deno to cover other aspects of web developments. Stay tuned.