Dabbling with Deno Tales from a web developer playing with a new toy Phil Hawksworth he/him

Phil Hawksworth he/him Head of Developer Relations, Deno

b u H t i G Link Tw i t e dI n y k S Bl ue te r @ PhilHawksworth.dev he/him Head of Developer Relations, Deno We b m o c . x r o w h aw k s

Naming things is hard. “node”

Naming things is hard. “node”.split(“”)

Naming things is hard. “node”.split(“”).sort()

Naming things is hard. “node”.split(“”).sort().join(“”)

Naming things is hard. deno

Naming things is hard. ahkorswwx

Tools and trends. Some technologies come and go

Tools and trends. Some technologies stick around

Tools and trends. Some technologies become ubiquitous

Tools and trends. JavaScript™ Frontend / Backend / Edges

Tools and trends. node

Tools and trends. JavaScript™

Tools and trends. TypeScript

Tools and trends. The pull of new interesting tools

Tools and trends. I first tried Deno by accident

Deno first contact. netlify.com

Deno first contact. export default async () =>” { return new Response(“Hello, World!”, { headers: { “content-type”: “text/html” } }); };

Deno first contact. A gateway drug took me deeper

Deno first contact. lume.land

Deno first contact. deno.com

Deno first contact. deno.com

Deno first contact. ❯ deno _

Um..what is Deno?

What is Deno? 1. Hosting platform 2. JavaScript runtime 3. TypeScript toolchain 4. Package manager 5. Task runner 6. Testing tool 7. Linter, formatter 8. Benchmarking tool 9. Compiler

What is Deno? 1. Hosting platform 2. JavaScript runtime 3. TypeScript toolchain 4. Package manager 5. Task runner 6. Testing tool 7. Linter, formatter 8. Benchmarking tool 9. Compiler

What is Deno? What got me intrigued?

What is Deno? What got me intrigued? An API design based on web standards

What is Deno? . s d r a d n a t s b we

What is Deno? Familiar APIs Heavily based on web standards there is less re-learning required docs.deno.com

What is Deno? Familiar APIs Heavily based on web standards there is less re-learning required docs.deno.com

What is Deno? Familiar APIs Heavily based on web standards there is less re-learning required docs.deno.com

What is Deno? Familiar APIs Heavily based on web standards there is less re-learning required docs.deno.com

What is Deno? Shallow on-ramp

Deno first contact. A familiar entry point for those familiar with node node main.js

Deno first contact. A familiar entry point for those familiar with node deno main.js

Deno first contact. A familiar entry point for those familiar with node deno main.ts

Deno first contact. A familiar entry point for those familiar with node npm init

Deno first contact. A familiar entry point for those familiar with node deno init

Deno for Visual Studio Code https://deno.co/vscode

Deno first contact. A familiar entry point for those familiar with node npm install

Deno first contact. main.ts import * as emoji from “node-emoji”; console.log( emoji.emojify(:sauropod: :heart: ); npm)

Deno first contact. main.ts import * as emoji from “npm:node-emoji”; console.log( emoji.emojify(:sauropod: :heart: ); npm)

Deno first contact. main.ts import * as emoji from “npm:node-emoji”; console.log( emoji.emojify(:sauropod: :heart: ); npm)

Deno first contact. deno run main.ts ! ❤ npm

Dependency management.

Dependency management. y l l a c o L Dependencies cached globally

Dependency management. deno install

Dependency management. deno add

Dependency management. deno add npm:node-emoji

Dependency management. “imports”: { “react”: “npm:react@18.2.0”, “vite”: “npm:vite@^6.2.4”, “@std/assert”: “jsr:@std/assert@1.0.12” “node-emoji”: “npm:node-emoji@^2.2.0”, } deno.json

Dependency management. main.ts import * as emoji from “npm:node-emoji”; console.log( emoji.emojify(:sauropod: :heart: ); npm)

Dependency management. main.ts import * as emoji from “node-emoji”; console.log( emoji.emojify(:sauropod: :heart: ); npm)

Dependency management. deno outdated

Dependency management. y l l a c o L Dependencies cached globally

Dependency management. https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

Dependency management. https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

Dependency management. https://trilon.io/blog/how-to-delete-all-nodemodules-recursively

Dependency management. ❯ deno clean

Task runner.

Running tasks. npm run dev

Running tasks. deno run dev

Running tasks. deno task dev

Test runner.

Test framework. deno test

Test framework. main_test.ts main.test.ts

Test framework. Mocking Async testing Coverage A variety of test styles

Test framework. docs.deno.com/examples

Test framework. docs.deno.com/examples/testing_tutorial

Test framework. docs.deno.com/runtime/fundamentals/testing

TypeScript toolchain.

JavaScript toolchain.

Development toolchain.

Toolchain. It’s already built in

Toolchain. deno main.js

Toolchain. deno main.ts

Toolchain. deno check

Toolchain. deno types

Toolchain. deno fmt

Toolchain. deno lint

Toolchain. docs.deno.com/lint

Why I’m excited.

Reasons to be excited. Simplification and unification of tools

Reasons to be excited. Regular improvements

Reasons to be excited. I kinda sorta know most of it already

Reasons to be excited. Lower friction and fewer quirks

Reasons to be excited. Security and performance

Recommended resources. docs.deno.com/examples Deno examples and tutorials discord.gg/deno Deno Discord bsky.app/profile/deno.land Deno on Bluesky www.youtube.com/watch?v=N04Nrl37Ies Deno 2 Deep Dive | Exploring the Deno Ecosystem

Thanks. philhawksworth.dev findthat.at/hello-deno