Skip to content

Commit 6b84909

Browse files
pehpradoSEWeiTung
authored andcommitted
pt-BR:Translation of 'locale/pt-br/knowledge/REPL/how-to-create-a-custom-repl.md' (#2285)
This is a translation of 'locale/pt-br/knowledge/REPL/how-to-create-a-custom-repl.md'
1 parent d875cb3 commit 6b84909

File tree

2 files changed

+134
-69
lines changed

2 files changed

+134
-69
lines changed

locale/pt-br/knowledge/REPL/how-to-create-a-custom-repl.md

Lines changed: 40 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,12 @@ layout: knowledge-post.hbs
1111
O Node permite aos usuários criarem seus próprios REPLs com o [módulo `repl`](https://nodejs.org/dist/latest/docs/api/repl.html). A forma de uso mais básica se parece com isso:
1212

1313
```js
14+
var repl = require('repl')
15+
1416
repl.start(prompt, stream);
1517
```
1618

17-
`prompt` é uma string que é usada para o prompt do seu REPL e tem por padrão o "> ". `stream` é um stream que o repl escuta e tem por padrão o `processo.stdin`. Quando você executa o comando `node` pelo prompt de comando, o que ele faz nos bastidores é executar `repl.start()` para fornecer o REPL padrão.
19+
No exemplo acima, o `prompt` é uma string que é usada para o prompt do seu REPL, que tem por padrão o "> ". `stream` é um stream que o repl escuta e tem por padrão o `process.stdin`. Quando você executa o comando `node` pelo prompt de comando, o que ele faz nos bastidores é executar `repl.start()` para fornecer o REPL padrão.
1820

1921
Entretanto, o repl é bem flexível. Abaixo segue um exemplo que demonstra isso:
2022

@@ -46,59 +48,58 @@ var local = repl.start("node::local> ");
4648
local.context.mood = mood;
4749
```
4850

49-
Este script cria *dois* REPLs: Um é normal, exceto pelo prompt customizado. Porém o *outro* é exposto através do módulo net de forma que se possa fazer a conexão telnet para ele! Além disso, ele usa a propriedade `context` para expor a função "mood" para os dois REPLs, e a string "bonus" apenas para o REPL remoto. Como pode ver, essa forma de tentar expor objetos em um REPL e não no outro *não funciona*.
51+
Este script cria *dois* REPLs: Um é normal, exceto pelo prompt customizado. Porém o *outro* é exposto através do módulo net de forma que se possa fazer a conexão telnet para ele! Além disso, ele usa a propriedade `context` para expor a função "mood" para os dois REPLs, e a string "bonus" apenas para o REPL remoto. Como você verá, essa forma de tentar expor objetos em um REPL e não no outro *não funciona*.
5052

5153
Além disso, todos os objetos no escopo global também serão acessíveis para os seus REPLs.
5254

53-
Observe o que acontece quando eu executo o script:
54-
55-
$ node repl.js
56-
REPL remoto iniciou na porta 5001.
57-
node::local> .exit
58-
^Cjosh@pidgey:/tmp/telnet$ node repl.js
59-
REPL remoto iniciou na porta 5001.
60-
node::local> mood()
61-
'^__^'
62-
node::local> bonus
63-
ReferenceError: bonus is not defined
64-
at [object Context]:1:1
65-
at Interface.<anonymous> (repl.js:171:22)
66-
at Interface.emit (events.js:64:17)
67-
at Interface._onLine (readline.js:153:10)
68-
at Interface._line (readline.js:408:8)
69-
at Interface._ttyWrite (readline.js:585:14)
70-
at ReadStream.<anonymous> (readline.js:73:12)
71-
at ReadStream.emit (events.js:81:20)
72-
at ReadStream._emitKey (tty_posix.js:307:10)
73-
at ReadStream.onData (tty_posix.js:70:12)
55+
Aqui é o que acontece quando você executa o script:
56+
57+
```shell
58+
$ node repl.js
59+
REPL remoto iniciou na porta 5001.
60+
node::local> .exit
61+
# <ctrl>-C
7462

63+
$ node repl.js
64+
REPL remoto iniciou na porta 5001.
65+
node::local> mood()
66+
'^__^'
67+
node::local> bonus
68+
ReferenceError: bonus is not defined
69+
```
7570

7671
Como podem notar, a função `mood` é usada junto do REPL local. Mas a string `bonus` não. Isso é esperado.
7772

7873
Observem agora o que acontece quando fazemos um telnet para a porta 5001:
7974

80-
josh@pidgey:/tmp/telnet$ telnet localhost 5001
81-
Trying ::1...
82-
Trying 127.0.0.1...
83-
Connected to localhost.
84-
Escape character is '^]'.
85-
node::remote> mood()
86-
'>.<'
87-
node::remote> bonus
88-
'DESBLOQUEADO'
75+
```shell
76+
$ telnet localhost 5001
77+
Trying ::1...
78+
Trying 127.0.0.1...
79+
Connected to localhost.
80+
Escape character is '^]'.
81+
node::remote> mood()
82+
'>.<'
83+
node::remote> bonus
84+
'DESBLOQUEADO'
85+
```
8986

90-
Como podem notar, a função `mood` *também* é disponibilizada através da telnet! Além disso `bonus` também é.
87+
Como você pode ver, a função `mood` *também* é disponibilizada através da telnet! Além disso `bonus` também é.
9188

9289
Outro ponto interessante das minhas ações é que bonus agora também é definida no REPL local:
9390

94-
node::local> bonus
95-
'UNLOCKED'
91+
```shell
92+
node::local> bonus
93+
'DESBLOQUEADO'
94+
```
9695

9796
Parece que nós "desbloqueamos" a string `bonus` no REPL local também. Como parece ser, quaisquer variáveis criadas em um REPL também estão disponíveis no outro:
9897

99-
node::local> var node = "INCRÍVEL!"
98+
```shell
99+
node::local> var node = "INCRÍVEL!"
100100

101-
node::remote> node
102-
'INCRÍVEL!'
101+
node::remote> node
102+
'INCRÍVEL!'
103+
```
103104

104-
Como você pode ver, o REPL do node é potente e flexível.
105+
Como você pode ver, o REPL do node é poderoso e flexível.

locale/pt-br/knowledge/REPL/how-to-use-nodejs-repl.md

Lines changed: 94 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,52 +8,116 @@ difficulty: 1
88
layout: knowledge-post.hbs
99
---
1010

11+
# Aprenda a usar o REPL
1112

12-
O Node.js vem com seu próprio REPL, que é uma abreviação para 'Read-Eval-Print Loop'. É o shell do Node.js. Qualquer JavaScript válido que pode ser escrito em um script, pode ser passado para o REPL. Pode ser extremamente útil para experimentos com o node.js, depurar código e entender alguns comportamentos excêntricos do JavaScript.
13+
O Node.js vem com seu próprio REPL, que é uma abreviação para 'Read-Eval-Print Loop'. É o shell interativo do Node.js. Qualquer JavaScript válido que pode ser escrito em um script, pode ser passado para o REPL. Pode ser extremamente útil para experimentos com o node.js, depurar código e entender alguns comportamentos excêntricos do JavaScript.
1314

14-
Para executar é simples - execute o node sem um nome de arquivo.
15+
Node.js tem um REPL independente, acessível a partir da linha de comando, e um módulo REPL integrado que você pode usar para
16+
[criar seu próprio REPL customizado](https://nodejs.org/api/repl.html#repl_repl). Nós vamos aprender o básico do REPL indepente.
1517

16-
docs@nodejitsu:~/$ node
18+
## Como começar com REPL
1719

18-
Ele então te deixa em um prompt simples ('>') onde você pode escrever qualquer comando JavaScript que desejar. Assim como na maioria dos shells, você pode apertar as setas para cima e para baixo para navegar através do histórico de comandos e modificar comandos anteriores. O REPL também utiliza a tecla <kbd>Tab</kbd> para completar o comando.
20+
Iniciar o REPL é simples, basta executar o node na linha de comando sem um nome de arquivo.
1921

20-
Qualquer que seja o comando, ele imprimirá o valor de retorno deste comando. Se você quiser reutilizar um valor de retorno anterior, você pode usar a variável especial `_`.
22+
```shell
23+
$ node
24+
```
2125

22-
Por exemplo:
26+
Ele te deixa em um prompt simples ('>') onde você pode escrever qualquer comando JavaScript que desejar. Assim como na maioria dos shells, você pode apertar as setas para cima e para baixo para navegar através do histórico de comandos e modificar comandos anteriores.
27+
28+
```shell
29+
$ node
30+
> var x = "Olá, Mundo!"
31+
undefined
32+
> x
33+
"Olá, Mundo!"
34+
> .exit
35+
```
36+
37+
Você pode também usar a tecla `Tab` para autocompletar alguns comandos. Quando várias opçõeS de preenchimento estiverem disponíveis, use `Tab` novamente para percorrê-las.
38+
39+
## Comandos especiais e sair do REPL
40+
41+
Os seguintes comandos especiais são surpotados por todas as instâncias do REPL (do [Documentação Node.js REPL](https://nodejs.org/api/repl.html#repl_commands_and_special_keys))
42+
43+
* `.exit` - Fecha o fluxo de E/S, fazendo com que o REPL saia.
44+
* `.break` - Quando no processo de entrada de multilinha de expressão, entra o comando `.break` (ou a combinação das teclas `ctrl+C` é pressionada), as próximos entradas ou o processo daquela expressão serão abortados.
45+
* `.clear` - Reseta o `contexto` do REPL para um objeto vazio e limpa qualquer multilinha de expressão que tenha sido inserida atualmente.
46+
* `.help` - Mostra a lista de comandos especiais.
47+
* `.save` - Salva a sessão atual do REPL em um arquivo.
48+
`> .save ./documentos/salvo.js`
49+
* `.load` - Carrega um arquivo dentro da sessão atual do REPL.
50+
`> .load ./documentos/carregar.js`
51+
* `.editor` - Entra no modo editor (`ctrl+D` para terminar, `ctrl+C` para cancelar).
52+
53+
```shell
54+
> .editor
55+
# Entering editor mode (^D to finish, ^C to cancel)
56+
function saudacao(nome) {
57+
return `Olá, ${nome}!`;
58+
}
59+
60+
saudacao('usuário do Node.js');
2361

24-
node
25-
> 1+1
26-
2
27-
> _+1
28-
3
62+
# ctrl+D
63+
'Olá, usuário do Node.js!'
64+
>
65+
```
66+
67+
As seguintes combiações de teclas no REP têm esses efeitos especiais:
68+
69+
* `ctr+C` - Quando pressionado uma vez, tem o mesmo efeito que o comando `.break`.
70+
Quando pressionando duas vezes em um linha vazia, tem o mesmo efeito que o comando `.exit`.
71+
* `ctrl+D` - Tem o mesmo efeito que o comando `.exit`.
72+
* `tab` - Quando pressionado numa linha vazia, mostra as variáveis globais e locais (escopo).
73+
Quando pressionado durando a entrada de um comando, mostra as opções relevantes que preenchem o comando.
74+
75+
## Retornar valores
76+
77+
Qualquer que seja o comando, ele imprimirá o valor de retorno deste comando. Se você quiser reutilizar o valor de retorno anterior, você pode usar a variável especial `_`.
78+
79+
Por exemplo:
80+
```shell
81+
$ node
82+
> 1+1
83+
2
84+
> _+1
85+
3
86+
```
2987

3088
Algo importante de notar é onde os valores de retorno do REPL são aplicados:
3189

32-
> x = 10
33-
10
34-
> var y = 5
35-
> x
36-
10
37-
> y
38-
5
90+
```shell
91+
> x = 10
92+
10
93+
> var y = 5
94+
> x
95+
10
96+
> y
97+
5
98+
```
3999

40100
Quando a palavra-chave `var` é utilizada, o valor da expressão é armazenado. Porém, *NÃO* retornado. Quando um simples identificador é utilizado, o valor é retornado também, assim como armazenado.
41101

102+
## Acessando Módulos
103+
42104
Se você precisar acessar quaisquer módulos nativos, ou módulos terceiros, eles podem ser acessados através do `require`, assim como em qualquer parte do Node.
43105

44106
Por exemplo:
45107

46-
node
47-
> path = require('path')
48-
{ resolve: [Function],
49-
normalize: [Function],
50-
join: [Function],
51-
dirname: [Function],
52-
basename: [Function],
53-
extname: [Function],
54-
exists: [Function],
55-
existsSync: [Function] }
56-
> path.basename("/a/b/c.txt")
57-
'c.txt'
108+
```shell
109+
$ node
110+
> path = require('path')
111+
{ resolve: [Function],
112+
normalize: [Function],
113+
join: [Function],
114+
dirname: [Function],
115+
basename: [Function],
116+
extname: [Function],
117+
exists: [Function],
118+
existsSync: [Function] }
119+
> path.basename("/a/b/c.txt")
120+
'c.txt'
121+
```
58122
59123
Note novamente que sem a palavra-chave `var`, o conteúdo do objeto é retornado imediatamente e apresentado no `stdout`.

0 commit comments

Comments
 (0)