JSP を使用した Java での開発から、AngularJS アプローチ (リッチクライアント) に移行しています。
JSP では、Apache Tiles を使用してテンプレートを作成できたので、メニュー、ヘッダー、フッターなどの一般的なものを定義し、どこでもインポートしました。
JSP/Apache Tiles で作ろうと思っていたのですが、Karma での自動テストが難しくなると思います。
編集: 巨大なアプリケーションを構築しています。大量のフォーム/メニュー項目があり、これらのそれぞれに対して 1 つのシングル ページ アプリケーションを作成する予定です。