DEV Community

Billy Okeyo
Billy Okeyo

Posted on • Originally published at billyokeyo.codes on

What is Deno 1.0

Deno has hit the waves since it was released on 13th May 2020, and the question some of us are asking right now is, "What is Deno?"

Deno is an improved version of Node.js. I know you might be familiar with Node.js, so Deno came into the light to do what Node.js could do but do it much better with improved features.

Deno was announced almost 2 years ago by Ryan Dahl who is also the creator of Node.js after saying he had some regrets on Node.js

Features of Deno

- It has an extensive library - It has TypeScript inbuilt so you don't have to compile TypeScript to JavaScript as it was before, Deno does this for you automatically - It is browser compatible in that it provides global window object and fetch functionalities - It has no package manager - It is based on modern features of JavaScript - It embraces ES modules 
Enter fullscreen mode Exit fullscreen mode

Those are just some of the features it has.

Does this mean now Node.js is going into the pit?

The answer all depends on the user, but if you get to try Deno I don't think you'll ever go back to Node.js

Why Learn Deno

Being the new wave in the technology, now the question is should I learn it? and the answer is yes, you should learn it but if you never interacted with JavaScript, TypeScript or Node.js, I'd suggest you start with Node.js but if you feel you are ready and can go that extra-mile then you can go ahead and get into Deno though it will a big effort.

As opposed to Node.js which was written in C++, Deno is written in Rust and TypeScript which makes it easier to work with TypeScript when using Deno

Similarities between Deno with Node.js

Both are good for server-side development

Both are developed on the V8 Engine

Differences between Deno and Node.js

Deno is written in Rust and TypeScript. Node.js is written in C++

Deno uses ES modules. Node.js uses Common JavaScript

Deno doesn't have a package manager, you import ES modules from URLs. Node.js has an official package manager called npm.

Deno offers sandbox security layer through permissions. Node.js can access anything a user can access

Deno uses modern ECMAScript features in its API and standard library. Node.js uses callbacks-based standard library.

Installing Deno

We have couple if ways to install deno:

Using Shell (macOS, Linux):

$ curl -fsSL https://deno.land/x/install/install.sh | sh 
Enter fullscreen mode Exit fullscreen mode

Using PowerShell (Windows):

$ iwr https://deno.land/x/install/install.ps1 -useb | iex 
Enter fullscreen mode Exit fullscreen mode

Using Homebrew (macOS):

brew install deno 
Enter fullscreen mode Exit fullscreen mode

Using Chocolatey (Windows):

$ choco install deno 
Enter fullscreen mode Exit fullscreen mode

Using Scoop (Windows):

$ scoop install deno 
Enter fullscreen mode Exit fullscreen mode

Once that's done, set your path and check out the help command

deno --help 
Enter fullscreen mode Exit fullscreen mode
Welcome Billy to Your Mighty 💪 Terminal 😎 d3cartel@d3cartel-billy:~ ➤ deno --help deno 1.0.0 A secure JavaScript and TypeScript runtime Docs: https://deno.land/std/manual.md Modules: https://deno.land/std/ https://deno.land/x/ Bugs: https://github.com/denoland/deno/issues To start the REPL: deno To execute a script: deno run https://deno.land/std/examples/welcome.ts To evaluate code in the shell: deno eval "console.log(30933 + 404)" USAGE: deno [OPTIONS] [SUBCOMMAND] OPTIONS: -h, --help Prints help information -L, --log-level <log-level> Set log level [possible values: debug, info] -q, --quiet Suppress diagnostic output By default, subcommands print human-readable diagnostic messages to stderr. If the flag is set, restrict these messages to errors. -V, --version Prints version information SUBCOMMANDS: bundle Bundle module and dependencies into single file cache Cache the dependencies completions Generate shell completions doc Show documentation for a module eval Eval script fmt Format source files help Prints this message or the help of the given subcommand(s) info Show info about cache or info related to source file install Install script as an executable repl Read Eval Print Loop run Run a program given a filename or url to the module test Run tests types Print runtime TypeScript declarations upgrade Upgrade deno executable to given version ENVIRONMENT VARIABLES: DENO\_DIR Set deno's base directory (defaults to $HOME/.deno) DENO\_INSTALL\_ROOT Set deno install's output directory (defaults to $HOME/.deno/bin) NO\_COLOR Set to disable color HTTP\_PROXY Proxy address for HTTP requests (module downloads, fetch) HTTPS\_PROXY Same but for HTTPS 
Enter fullscreen mode Exit fullscreen mode

We have a bunch of subcommands we can run, try them out...

bundle - this bundles module and dependencies of a project into a single file

cache - this caches the dependencies

doc- this shows documentation for a module

eval- this evaluates some code. Example

deno eval "console.log(5 + 5)"

completions- this generates shell completions

install- this installs script as executable

run - runs a program given url to the module or filename

repl- Read-Eval-Print-Loop (This is the default subcommand, and can be started by only typing

deno

Those are just some of the subcommands Deno offers. You can also run help for a specific subcommand e.g

deno run --help 
Enter fullscreen mode Exit fullscreen mode

Running Deno App

Let's try something simple for the first time in deno

deno run https://deno.land/std/examples/welcome.ts 
Enter fullscreen mode Exit fullscreen mode

The above code outputs

Welcome to Deno 🦕 
Enter fullscreen mode Exit fullscreen mode

If you click on the link we executed you get this a simple TypeScript Code..

You can try fhe other examples available in the Deno websites, check the out at https://deno.land/std/examples/.

That's all I had for you, hope you learned something.

See you soon

Top comments (0)