フロントエンドとバックエンドはプロジェクトを分けておいてよかった

Nuxt 3は、~/server/apiディレクトリにAPIサーバーの実装を書くことができます。つまり1プロジェクトでウェブサイトのフロントエンドとバックエンドの実装を全て収めることができる。Nuxt 2時代も似たような仕組みにできたのですが、考えた挙句、APIサーバーはプロジェクトを分けてExpressで実装することにしました。

Nuxt 2時代にそうした主な理由は、各ソースファイルで気をつけてimportしないと、データベースにアクセスする実装など、バックエンドの実装がブラウザ側でロードするJavaScriptファイルに含まれてしまいそうだったからです。プロジェクトを分けてNuxt側のコードにはデータベースにアクセスする実装を一切含まないようにしました。

Nuxt 3に移行する際、そうしておいて良かったと思いました。移行のコストが少なく済んだからです。APIサーバーの実装はリポジトリ自体違うし、Nuxt 2から3への移行の影響を受けませんでした。

HTMLレンダリングが主となるフレームワークは、また新しいものに変わる可能性があります。今までもコロコロ変わってきましたし・・・APIサーバー側はデータベースにアクセスしてJSONで返す実装が主ですし、フレームワークや言語を変更することはあまりないように思います。とりあえず古参のExpressで実装しておけば大丈夫かなと。

プロジェクトを分けるとリポジトリを分けることになり、ウェブアプリ(Nuxt)、APIサーバー(Express)、さらに両者の共通実装の3リポジトリに分かれて管理が面倒です。それでもフレームワーク移行のコストのほうが高いと思うので、これは我慢するしかないかなあと。