Skip to content

Latest commit

 

History

History
242 lines (128 loc) · 6.06 KB

index.md

File metadata and controls

242 lines (128 loc) · 6.06 KB
layout title description
secao
Deno
Uma nova runtime para JavaScript

O Deno é um novo runtime segura para JavaScript e TypeScript.

O lançamento da sua versão 1.0 está chamando bastante atenção das comunidades de tecnologia no mundo.

Mas, afinal de contas, o que é o Deno ?

Ele substitui o Node.js ou alguma outra tecnologia ?

Será que ele substituirá o Nodejs ?

Quais são suas diferenças e propostas ?

Ryan Dahl, criador do Node, deu uma palestra em junho de 2018 na JSConf intitulada 10 Coisas que eu lamento pelo Node.js (10 Things I Regret About Node.js no original).

Instalando o Deno no Linux

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

Teste executando deno, deve abrir o REPL.

Ainda no terminal, execute o comando abaixo.

deno run https://deno.land/std/examples/welcome.ts
Welcome to Deno 🦕

Por curiosidade, acesse https://deno.land/std/examples/welcome.ts

console.log("Welcome to Deno 🦕");

Instalando no Windows

Abri o powershel e executei..

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

Obtive...

Deno was installed successfully to C:\Users\flavio\.deno\bin\deno.exe
Run 'deno --help' to get started

Da mesma forma que no Linux, testei da seguinte forma:

deno run https://deno.land/std/examples/welcome.ts
Welcome to Deno 🦕

Só o símbolo do dinossauro que falhou.

Terminal iterativo

Você pode executar apenas deno ou deno repl.

$ deno repl
Deno 1.0.0
exit using ctrl+d or close()
> console.log("Hello World !")
Hello World !

... e sair brincando.

Hello world com Deno

Eu peguei o trecho abaixo, coloquei em um arquivo e excutei.

import { serve } from "https://deno.land/[email protected]/http/server.ts";

const s = serve({ port: 8000 });

console.log("http://localhost:8000/");

for await (const req of s) {
    req.respond({ body: "Hello World\n" });
}

O arquivo chama-se 01-basic.js (você pode encontrá-lo aqui)

Talvez você queira fazer o download deste repo deno-hello-world.

Eu executei dessa forma deno run 01-basic.js, ele começa a fazer dowload dos pacotes...

Download https://deno.land/[email protected]/http/server.ts
Download https://deno.land/[email protected]/encoding/utf8.ts
Download https://deno.land/[email protected]/io/bufio.ts
Download https://deno.land/[email protected]/testing/asserts.ts
Download https://deno.land/[email protected]/async/mod.ts
...
...
error: Uncaught PermissionDenied: network access to "0.0.0.0:8000", run again with the --allow-net flag

No final ele aprensentou um erro. Deno é seguro, certo ?

deno run --allow-net 01-basic.js

...e voialá, basta acessar http://localhost:8000/

Observação, os comandos abaixo não fucionaram. Precisa ser como mostrado acima.

deno --allow-net run 01-basic.js
deno run 01-basic.js --allow-net flag

Executando

Para arganizar o pensamento, mostro abaixo o comando para executar uma aplicação deno:

deno run <entry-point>

Deno tentará baixar todas as suas depêndencias.

Para forçar a releitura dos módulos, execute o comando abaixo:

deno run --reload <entry-point>

Um exemplo de leitura de disco

Neste exemplo eu exploro a leitura em disco.

Precisaremos, ao executar o arquivo, utilizar o parâmetro --allow-read.

O código de exemplo é bem simples, possui apenas uma linha.

Repare que a extensão do arquivo é ts (typescript).

console.log( Deno.cwd() )

O arquivo chama-se 02-basic.ts (você pode encontrá-lo aqui)

deno run --allow-read ./exemplos/02-basic.ts

A saída foi...

Compile file:///home/flavio/devfuria.com.br/deno/exemplos/02-basic.ts
/home/flavio/devfuria.com.br/deno

Exemplo de teste unitário

Escrevendo testes unitários com Deno.

Abaixo vemos um exemplo:

import { assert, equal } from "https://deno.land/std/testing/asserts.ts";

Deno.test('the whole truth', () => {
    assert(1 === 1)
})

Deno.test('and nothing but the truth', () => {
    equal(1, 1)
})

O arquivo chama-se 03-test.ts (você pode encontrá-lo aqui)

Para executar o teste use deno test conforme abaixo.

deno test ./exemplos/03-test.ts

A saia dos testes é...

running 2 tests
test the whole truth ... ok (7ms)
test and nothing but the truth ... ok (2ms)

test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out (9ms)

Veja um repositório de exemplo testes unitários

Veja também Harry Wollf - Writing tests with Deno

Framework para deno

Se você (assim como eu) vem do mundo Node, deve estar se perguntando:

"Cadê o 'express' do Deno ?"

Ele está aqui oak

Veja um hello world (artigo + repo) de um servidor Deno com OAK.

Suporte no WebStorm (JetBrains)

Os uários da editor WebStorm (na verdade uma IDE) já podem contar com suporte ao Deno instalando o plugin equivalente.

Lei mais no blog da jetbrains Deno Support in JetBrains IDEs

Deno no Youtube

Ordem cronológica...

Cod3r:

Progamador BR:

BrasilJS:

ez.devs:

Código Fonte TV:

Site Oficial

https://deno.land/