human
node.js Webアプリの例のコードを提供します。
gpt
とても基本的なExpress（人気のNode.jsウェブ・フレームワーク）アプリを紹介しよう：

```
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});
```

これでサーバーが起動し、ポート3000でリッスンします。ホームページ（/）へのリクエストには "Hello World!"で応答する。
これをnode app.jsで実行する（app.jsはこのコードを含むファイル名）。
もちろん、これは非常に単純な例であり、実際のアプリにはさらにルートを追加したり、静的ファイルを提供したり、データベースに接続したりすることになる。しかし、これで基本的な構造を知ることができる。
human
/publicディレクトリに静的ファイルにサポートを追加することを除いて、サンプルコードをもう一度記述します。

また、URLの終了時に.html拡張機能を持たないためのサポートを追加します。
gpt
もちろん、/publicディレクトリから静的ファイルを提供し、URLに.html拡張子を必要としないNode.jsウェブ・アプリのサンプル・コードです：

```
const express = require('express');
const path = require('path');
const app = express();

// Serve static files from the 'public' directory
app.use(express.static(path.join(__dirname, 'public')));

// Set up a route to serve the homepage
app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'public/index.html'));
});

// Allow routes without a .html extension to work
app.use((req, res, next) => {
  if (!req.path.includes('.') && req.path !== '/') {
    req.url += '.html';
  }
  next();
});

// Start the server and listen on port 3000
app.listen(3000, () => {
  console.log('Example app listening on port 3000!');
});
```

この例では、express.staticミドルウェアを使用して/publicディレクトリから静的ファイルを提供し、pathモジュールを使用してファイルパスを構築しています。ホームページのルートは、/publicディレクトリにあるindex.htmlファイルを送信します。コード下部のミドルウェア関数は、リクエストされたURLにファイル拡張子が含まれているかどうかをチェックし、含まれていない場合はURLに拡張子.htmlを追加します。これにより、拡張子.htmlのないURLでもリクエスト通りに動作するようになります。