Vue.js + Jersey桌面应用

我之前介绍了一个简易桌面应用的实现示例,用于演示如何使用Vue.js和NestJS来实现桌面应用的vue-nest-desktop-app。但是,由于我对于后端开发更加熟悉Java(Spring Boot + Jersey)而不是Node.js,因此我创建了一个名为vue-jersey-desktop-app的应用,将后端使用Java进行替换。

以下简要总结了开发的要点。

应用程序配置

システム構成.png
    • バックエンドはSpring Bootで開発している。埋め込みTomcatを組み込んだ実行可能jarファイル(いわゆるfat jar)にビルドして配布し、ローカルで起動したアプリケーションサーバーにブラウザからアクセスして利用する構成としている。

 

    • フロントエンドはVue.jsで実装し、ビルドしたHTML、CSS、JavaScriptをバックエンドのWebサーバー機能(spring-boot-starter-web)で静的ファイルとして配信する。

 

    主な機能はバックエンドでRestful API(spring-boot-starter-jersey)として提供し、フロントエンドからのAPI呼び出しで利用する形としている。

将Spring Boot应用程序转换为桌面应用程序

为了将Spring Boot应用程序化为桌面应用程序,我已经采取了以下措施。

    • ログをSwingで実装したウィンドウに表示し、ウィンドウを閉じたときにアプリケーションが停止するようにする。(jarを実行したときにアプリケーションがバックグラウンドで起動するだけでは、起動中かどうかの判別や、プリケーションの停止がしにくいため。)

参考:ConsoleFrame.java

アプリケーションサーバーはローカルマシンの空きポートを探して起動し、起動後にシステム(デフォルト)ブラウザでフロントエンドのトップ画面を自動で開く処理を入れている。

参考:Browser.java

调用外部的Restful API

为了通过浏览器访问托管在本地运行的Web服务器上的前端,无法直接从前端访问外部的Web API,以防成为不同源的请求。因此,在后端实现了API的代理功能(同时支持对开发用密闭API的访问,以及SSH端口转发)。

参考资料:ApiProxy.java

广告
将在 10 秒后关闭
bannerAds