

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Aprendendo mais: Explore o aplicativo usado nessa apresentação
<a name="gettingstarted-linux-explore-app-source"></a>

**Importante**  
O AWS OpsWorks Stacks serviço chegou ao fim da vida útil em 26 de maio de 2024 e foi desativado para clientes novos e existentes. É altamente recomendável que os clientes migrem suas cargas de trabalho para outras soluções o mais rápido possível. Se você tiver dúvidas sobre migração, entre em contato com a AWS Support equipe no [AWS re:POST](https://repost.aws/) ou por meio do Premium [AWS Support](https://aws.amazon.com/support).

Este tópico descreve o aplicativo que o OpsWorks Stacks implanta na instância para este passo a passo.

Para ver o código-fonte do aplicativo, extraia o conteúdo do [opsworks-windows-demo-nodejs](https://github.com/awslabs/opsworks-windows-demo-nodejs) GitHub repositório em um diretório vazio na sua estação de trabalho local. Você também pode entrar na instância na qual implantou o livro de receitas e explorar os conteúdos do diretório `/srv/mylinuxdemoapp`.

O arquivo `index.js` contém o código mais significativo para o aplicativo:

```
var express = require('express');
var app = express();
var path = require('path');
var os = require('os');
var bodyParser = require('body-parser');
var fs = require('fs');

var add_comment = function(comment) {
  var comments = get_comments();
  comments.push({"date": new Date(), "text": comment});
  fs.writeFileSync('./comments.json', JSON.stringify(comments));
};

var get_comments = function() {
  var comments;
  if (fs.existsSync('./comments.json')) {
    comments = fs.readFileSync('./comments.json');
    comments = JSON.parse(comments);
  } else {
    comments = [];
  }
  return comments;
};

app.use(function log (req, res, next) {
  console.log([req.method, req.url].join(' '));
  next();
});
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }))

app.set('view engine', 'jade');
app.get('/', function(req, res) {
  var comments = get_comments();
  res.render("index",
    { agent: req.headers['user-agent'],
      hostname: os.hostname(),
      nodeversion: process.version,
      time: new Date(),
      admin: (process.env.APP_ADMIN_EMAIL || "admin@unconfigured-value.com" ),
      comments: get_comments()
    });
});

app.post('/', function(req, res) {
  var comment = req.body.comment;
  if (comment) {
    add_comment(comment);
    console.log("Got comment: " + comment);
  }
  res.redirect("/#form-section");
});

var server = app.listen(process.env.PORT || 3000, function() {
  console.log('Listening on %s', process.env.PORT);
});
```

Veja o que o arquivo faz:
+ `require` carrega módulos que contêm algum código dependente que esse aplicativo da web precisa para ser executado como esperado.
+ As funções `add_comment` e `get_comments` escrevem informações para, e leem informações do arquivo `comments.json`.
+ Para obter mais informações sobre `app.get`, `app.listen`, `app.post`, `app.set` e `app.use`, consulte o [Expressar referência da API](http://expressjs.com/4x/api.html).

 Para aprender como criar pacote para aplicativo de implantação, consulte [Origem do aplicativo](workingapps-creating.md#workingapps-creating-source).