網頁

2026/04/30

【Delphi 現代化轉型】Day 6:使用 Gemini CLI 將 DataSnap 轉為 Horse

作者:吳祐賓  

 

 


 

 

 

 

拋開『技術規格』談情懷,就是耍流氓

 

先說結論:AI 在 Delphi 改寫上並不值得相信,你仍必須有足夠的 Debug 知識。否則就算把 AI 罵哭,它寫的程式碼也提高不了多少正確性 (笑)


很久很久以前,DataSnap 在 2010 年的 XE1 迎來史詩級的改變,全面整合後端與前端,保證你在開發的每個角落都能看到、用到 "DataSnap",後端使用的叫 "DataSnap Framework",前端使用的叫 "DataSnap JavaScript Framework"

 

光陰似箭,時間來到 2026 年 RAD Studio 13.1,回顧 DXE 到 D13.1,十多年來 DataSnap 到底做了什麼重大改變:



1. DataSnap js framework 預設 sync AJAX 的問題改善了沒?

2. Async callback hell 改善了沒?

3. Basic Auth 以外的驗證機制提供了沒?

4. 推出相容 VUE, REACT, Angular 的現代擴充了沒?

 


沒有,一個都沒有! 

 

 

取而代之的,是 Marco Cantu 自研而來的 WebStencils server-side template engine(語法就是 ASP.NET Razor Pages:@if、@for、@RenderBody、@LayoutPage 等)

 

搭配著 HTMX,直接讓你十多年前的情懷封頂! 把現代 JavaScript 直接從 Delphi 世界中除名,眼不見為淨

 

HTMX 在開發原型 (Prototype Web Application) 的場合,確實是好用、舒服的解方

但我要寫的是現代 Web 應用!用的是 DevExtreme 這類能夠將 VCL 豐富體驗完整照搬到 Web 上的極緻方案!

 

看在我的眼裡,這等同官方親口承認:

 

「JS 整合之路,我不玩了」!

 

我之所以在意,是因為必須為相信我的讀者負責


我曾是虔誠信仰 DataSnap 的信徒,但人一生能有幾個 16 年?

 

官方許多華麗,但用起來一大堆的推廣,放在現在來看,像是拿自己的娛樂在挑戰我們的飯碗。所以我決定在這一刻停止,離開 DataSnap ,走往象徵應許之地的 horse

 

接著,用一個標準 DataSnap 專案,透過 Gemini CLI 輔助,平順地完成 Horse 大遷徒 

 

 

建立 DataSnap REST Application

 

參考【DELPHI IN DEPTH DATASNAP 網站應用程式全端開發】一書

張子仁老師的【建置DataSnap Client Server 1, 2, 3】 系列文章

 

完成後的網頁畫面應該如下:

 

經典 Delphi 水族箱資料庫網頁化展示

 

 

建立 Horse 空白專案

 

參考這篇文章,逐步建立 Horse 空白專案 :【Delphi 現代化轉型】Day 3:授權降階計畫:用 Horse 跑出 API,每人年省 $2,000+ 支出 

 

 

將上述 DataSnap 和 Horse 專案一併放到給 Gemini CLI 操作的資料夾,避免 AI 出格,也能專注在指定區域作業

 

我的路徑是 "vclDemos\geminicli" 作為 Gemini CLI 測試路徑 ,供您參考

 

 

安裝 Gemini CLI

 

Gemini 免費帳戶也能好好使用 Gemini CLI!


然而,Google 除了給訂閱 AI Pro 用戶 5TB 超大容量雲端硬碟 (2026-04-05 新聞) 外,Gemini CLI 也給得很大方,不僅能使用 API Token,還能夠使用 Google AI Pro 帳號登入消㧌 Chat 用量模式


1. 記得先安裝 Node.js,這是 Gemini CLI 的必要環境


2. 進入 https://geminicli.com/ 複製以下指令就可以安裝 Google CLI:

 

npm install -g @google/gemini-cli 

 

Gemini CLI 官網

 

 

執行 GEMINI

 

進入前面建立的 Gemini CLI 測試路徑,執行 "gemini",初次執行時,Gemini CLI 會要求身份驗證,有三種方式,我選 "Login with Google":


  • Login with Google: 透過 Google Gemini Code Assist 認證
  • Gemini API Key: 透過 GEMINI_API_KEY 進行認證
  • Vertex AI: 透過 Google Cloud 使用 Google Gemini API 

 

Google Gemini Code Assist 登入

 

 

驗證成功!

PowerShell 也會回報訊息

 

 

再次執行,系統會詢問 AI 可否執行的權限:

 

1. 信任當前目錄

2. 信任上層目錄

3. 不信任 


這裡我選 "1",Gemini 就只會在該目錄下操作。

 


 

Gemini CLI 支援中文交談

 

設定完成後,就可以在對話框中輸入訊息和 Gemini 交談,而且中文也可以通!

 

中間底下的對話框可以輸入中文

 
 
Gemini 看得懂中文,也會用中文回答你



讓 Gemini CLI 成為自動化遷移工具

 

接著叫 Gemini CLI 做 DataSnap 專案遷徒到 Horse,要求它將 DataSnap API 在 Horse 重製

 

後端 API 遷徒 Prompt:

 

把 DataSnap 專案中的 API,復刻到 Horse,允許你使用 Horse 語法進行要國中生能看懂的最簡單解,若內部資料庫不足,必須使用網頁查找 Horse 相關文件進行調整,嚴禁瞎猜設計

 

前端 API 遷徒 Prompt:

 

Horse 建立前端網頁 reactclient.html,參考 DataSnap 的 reversestring.html 使用 React.js Stand-alone 方式復現,horse 要能載入此靜態網頁,api 連結 horse server,以簡明方式設計,不要炫技,若內部資料庫不足,必須使用網頁查找 Horse 相關文件進行調整,嚴禁瞎猜設計


Gemini CLI 製作前端檔案歷程

Gemini CLI 製作 Horse API 歷程

 

驗收

 

由於完全交由 Gemini CLI 發揮,我自己沒有動手寫程式碼,所以就不放佔畫面的程式碼了 

 

一如往常的,Gemini 還是無法處理 WebBroker 一貫以來的 UTF8 顯示問題,必須搭配 Horse Docs 才能對症下藥,但問題不大,解決也是分分鐘的事

  

Gemini 前端的表現還不賴,連 RWD 也貼心做好做滿

 


 

看著歷年來官方、3rd 推出的【大遷徒】工具又貴又不完整,突然覺得有 AI 輔助的時代真的很幸福!

沒有留言:

張貼留言