mORMot 1.18 第8章 Delphi中的服務器端JavaScript
在mORMot框架中,對JavaScript腳本的支持被稱爲Monkey On Rails(版權歸Pavel Mashlyakovsky所有,郵箱:[email protected]),它藉助了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執行環境進行適當的隔離和限制(即沙箱處理)。