

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Más información: explorar la aplicación utilizada en este tutorial
<a name="gettingstarted-linux-explore-app-source"></a>

**importante**  
El AWS OpsWorks Stacks servicio llegó al final de su vida útil el 26 de mayo de 2024 y se ha desactivado tanto para los clientes nuevos como para los existentes. Recomendamos encarecidamente a los clientes que migren sus cargas de trabajo a otras soluciones lo antes posible. Si tienes preguntas sobre la migración, ponte en contacto con el AWS Support equipo en [AWS Re:post](https://repost.aws/) o a través de Premium [AWS Support](https://aws.amazon.com/support).

En este tema, se describe la aplicación que OpsWorks Stacks implementa en la instancia para este tutorial.

Para ver el código fuente de la aplicación, extrae el contenido del [opsworks-windows-demo-nodejs](https://github.com/awslabs/opsworks-windows-demo-nodejs) GitHub repositorio en un directorio vacío de tu estación de trabajo local. También puede iniciar sesión en la instancia en la que ha implementado el libro de recetas y explorar el contenido del directorio `/srv/mylinuxdemoapp`.

El archivo `index.js` contiene el código más importante para la aplicación:

```
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);
});
```

Esto es lo que hace el archivo:
+ `require` carga módulos que contienen algún código dependiente que esta aplicación web necesita para funcionar como se espera.
+ Las funciones `add_comment` y `get_comments` escriben información en y leen información del archivo `comments.json`.
+ Para obtener información sobre `app.get`, `app.listen`, `app.post`, `app.set` y `app.use`, consulte la referencia de la API [Referencia de la API Express](http://expressjs.com/4x/api.html).

 Para obtener información sobre cómo crear y empaquetar la aplicación para la implementación, consulte [Origen de las aplicaciones](workingapps-creating.md#workingapps-creating-source).