最近,tms 經過1年多,集合了數十名高手大牛,開發出了一個跨時代的產品,就是tms web core.
具體的介紹詳見官網,https://www.tmssoftware.com/site/tmswebcore.asp。
這個產品可以把pascal 代碼編譯成 js 代碼,以便瀏覽器識別。不同於以往的用js 映射 delphi 代碼。
這個是真編譯,也就是說,編譯出來的js 代碼,可以在任何web server 里運行,與delphi 沒任何關系。
這個編譯器是著名的FPC 的核心開發者開發的。
當然很多人可以說,現在開發web 的語言那么多,PHP,JSP,C# 等等,為什么非要用delphi 開發呢?
作者只有三個字:我喜歡。
好了,閑話少說,我們今天就做一個簡單的顯示后台數據庫的例子,當然了應用服務器我們還是選擇kbmmw。
別問我為什么,還是三個字:我喜歡。
服務器端其實就是我們以前做的例子,就是kbmmw smart rest 服務。
由於要在瀏覽器里面訪問不同域的數據,因此上面的例子要處理一下 跨域的問題。這個問題其實以前也寫過。
服務器端處理一下跨域就可以了。
procedure TkbmMWCustomSmartService3.kbmMWCustomHTTPSmartServiceCORS( Sender: TObject; const ARequestHelper, AResponseHelper: TkbmMWHTTPTransportStreamHelper; const AOrigin: string; var AAllowedOrigins, AAllowedMethods, AAllowedHeaders: string); begin AAllowedMethods:='GET' ; AAllowedOrigins:='*'; //為了演示,此處許可任何來源的訪問 AAllowedHeaders:= 'x-requested-with'; end; function TkbmMWCustomSmartService3.Getall:TObjectList<TAnimalsNoImage>; begin ProcessCORSRequest; // 此處必須加這一句 Result:=form1.xalionORM.QueryList<TAnimalsNoImage>; end;
好了,服務器就處理完了,編譯運行。
現在我們做tms web core 端。
新建一個tms web application.
放上以上的控件,屬性設置如圖,其它的非常類似VCL 中訪問數據的控件。
可以右鍵在 WebClientDataSet1上添加對應字段。
好了。添加連接的代碼,就兩句代碼。
procedure TForm1.WebButton1Click(Sender: TObject); begin WebClientConnection1.Active:=True; WebMemo1.Lines.Add('open connection!'); end;
點擊delphi 運行按鈕,項目會很快編譯完並打開瀏覽器。真的非常快,有一種當年D7的感覺,其實這個很正常,因為他是FPC 做的編譯器。
瀏覽器顯示
點擊打開數據庫,就會顯示數據。
非常簡單。
今天就先介紹到這里,由於tms web core 剛出來新版本,也有一大堆問題,最大的問題居然不支持中文。
已經給官方報bug了,希望盡快修復,否則只能說呵呵了。
官方把tms web core 工程比做 Mille Miglia(千里耐力賽),第一個版本后面跟着Brescia。這是千里耐力賽的
第一個出發城市,表示長路漫漫。中國有句古話,叫做千里之行,始於足下。tms web core 的思路很好,但是需要
走的路還很長,期望經過多個版本的迭代,成為一個真正的開發web 的利器。
2018.8.4 補記:
tms web core 1.0.0.3 已經解決中文問題。