loading...
Cover image for Getting Started with Deno 🦕

Getting Started with Deno 🦕

dailydevtips1 profile image Chris Bongers Originally published at daily-dev-tips.com ・2 min read

Today, we'll be covering getting started with Deno! Deno is a JavaScript server language like node.js but built in Typescript.
It's designed to improve the shortcomings of node.js.

It's been quite hyped over the last couple months, and even when writing this article, I have zero experience with it, so this guide is also my guide.

What is TypeSript?

As mentioned, TypeScript is a superset of JavaScript. TypeScript is a strongly typed language, meaning types must be defined when declaring variables. This makes it more strict and easier to spot errors and faults.

Setting up Deno

To get started, we need to install Deno locally first.

If you are on Linux/Mac run the following command:

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

If you're on Windows:

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

Note: You can find your install package on the Deno website

You can verify the installation by running:

deno --help

Our First Deno Application

So let's start by creating our first Deno application.

Create a new folder and our starting file server.ts

mkdir deno && cd deno

Let's start adding lines to our server.ts file

import {serve} from 'https://deno.land/std@0.63.0/http/server.ts';

This tells our server to import the serve module from a URL; in node.js we would have to use npm install first!

Now we are going to create a new Deno server:

const server = serve({port: 1337});

We are starting our server on port 1337.

Sending a response to the browser

for await (const req of server) {
  req.respond({body: 'Hello Deno!!'});
}

So this is a bit different then what we see in node.js.
We loop through each incoming request, and for each request, we are returning a body!

Running Our Deno Server

To run our deno server, we can run the following command in our terminal.

deno run --allow-net server.ts

Now we can open our browser and go to localhost:1337. We should now see our body!

Awesome, getting started was really quick and easy!

You can download my starter project on GitHub

Thank you for reading, and let's connect!

Thank you for reading my blog. Feel free to subscribe to my email newsletter and connect on Facebook or Twitter

Posted on by:

dailydevtips1 profile

Chris Bongers

@dailydevtips1

I write daily web development tips that help you become a more efficient developer. 👨‍💻⚡️

Discussion

markdown guide
 

hello,
i fail to see what deno is solving
and i wonder how is dealt/checked integrity of imports
and what happens if we start deplaying deno and suddenly one single tiny online dependency is not available for undefined time frame

 

i fail to see what deno is solving

I think deno is trying to be a "better node". How?

  • Improved security. No file, network, or environment access, unless explicitly enabled.
  • Better compatibility with web standards.
  • Has common utilities built-in like a code formatter, a bundler and some others. Even typescript support is built-in.

Sound good, right? But do we need it? I don't know.

i wonder how is dealt/checked integrity of imports

The details of that are here: Integrity checking & lock files

what happens if we start deplaying deno and suddenly one single tiny online dependency is not available for undefined time frame

Even npm can fail, right? What do you do then?

In the case of deno you can choose to get your dependencies from a cdn, and just trust that it'll be there. The other option is to take the deno cache directory and put that on source control, they explain how here.

 

Very well explained, are you using Deno for any production stuff?

Not yet. I would rather wait until deno can do something node can't, or at least until deno has 100% compatibility with node's ecosystem.

 

I got interested since it was promised to be a better version of node.js that's how far I got, and just started playing around with it.

I'm not too sure about the integrity of the imports.

I do believe once we deploy, it's all compiled, so no worry on the imports there.