

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Approfondimento: esplorazione dell'app utilizzata in questa procedura guidata
<a name="gettingstarted-linux-explore-app-source"></a>

**Importante**  
Il AWS OpsWorks Stacks servizio ha raggiunto la fine del ciclo di vita il 26 maggio 2024 ed è stato disattivato sia per i clienti nuovi che per quelli esistenti. Consigliamo vivamente ai clienti di migrare i propri carichi di lavoro verso altre soluzioni il prima possibile. Se hai domande sulla migrazione, contatta il Supporto AWS Team su [AWS re:post](https://repost.aws/) o tramite Premium [AWS Support](https://aws.amazon.com/support).

Questo argomento descrive l'app che OpsWorks Stacks distribuisce all'istanza per questa procedura dettagliata.

Per visualizzare il codice sorgente dell'app, estrai il contenuto del [opsworks-windows-demo-nodejs](https://github.com/awslabs/opsworks-windows-demo-nodejs) GitHub repository in una directory vuota sulla workstation locale. Puoi anche effettuare l'accesso all'istanza in cui hai distribuito il libro di ricette e quindi esplorare i contenuti della directory `/srv/mylinuxdemoapp`.

Il file `index.js` contiene il codice più significativo dell'app:

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

Le operazioni eseguite dal file sono descritte di seguito:
+ `require` carica i moduli contenenti parte del codice dipendente necessario per la corretta esecuzione di questa app Web.
+ Le funzioni `add_comment` e `get_comments` leggono e scrivono le informazioni nel file `comments.json`.
+ Per ulteriori informazioni su `app.get`, `app.listen`, `app.post`, `app.set` e `app.use`, consulta la [documentazione di riferimento relativa all'API Express](http://expressjs.com/4x/api.html).

 Per ulteriori informazioni su come creare l'app e definire il relativo pacchetto per la distribuzione, consulta [Origine dell'applicazione](workingapps-creating.md#workingapps-creating-source).