mORMot 1.18 第8章 Delphi中的伺服器端JavaScript
在mORMot框架中,對JavaScript指令碼的支援被稱為Monkey On Rails(版權歸Pavel Mashlyakovsky所有,郵箱:pavel.mash@gmail.com),它藉助了Mozilla基金會的SpiderMonkey類。
mORMot允許程式設計師編寫功能強大的應用程式,但如果客戶希望自定義應用程式,又該如何呢?透過整合JavaScript(具有即時編譯特性的ECMAScript5),業務邏輯或特定於客戶的細節(如報告)便可以在JavaScript中進行自定義。
為了使用這些功能,您將需要最新的庫檔案,請參考mORMot的文件以獲取最新二進位制檔案的下載連結。
以下是一個用於生成報告的JavaScript函式示例:
function showProcessOutput(StudentID) {
var student = JSGetStudentByID(StudentID);
var document = 'javascript.dpr';
var s = loadFile(document);
var result = "<h1>" + student.Name + "</h1>";
result += 'ID is ' + student.StudentID;
result += "<pre>" + s + "</pre>";
return result;
}
在Delphi的mORMot程式中,我們可以呼叫這個JavaScript函式 showProcessOutput()
,而它又會呼叫Delphi程式中的兩個函式:JSGetStudentByID()
和 loadFile()
。
JSGetStudentByID()
函式會從mORMot的典型函式 GetStudentByID()
中獲取 TSQLStudents
記錄的JSON表示。
我們可以透過訪問URL http://localhost:888/ROOT/234234
來呼叫這個JavaScript函式,並傳入特定的學生ID。
該函式會返回類似下面的輸出:
Joe Smith
ID is 234234
以下是一個簡單的Delphi程式示例,該程式會在 http://localhost:888/root
上提供服務:
program JSHttpApiServer;
// ... 程式程式碼 ...
完整的JavaScript示例程式碼包含在此書的可下載原始碼中,位於JavaScript資料夾內。
請注意,如果您向JavaScript暴露了過多的函式,使用者可能會創造出驚人的成果,但也可能破壞您的系統安全性。因此,請務必確保對JavaScript執行環境進行適當的隔離和限制(即沙箱處理)。