mORMot 1.18 第08章 Delphi中的伺服器端JavaScript

海利鸟發表於2024-04-29

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執行環境進行適當的隔離和限制(即沙箱處理)。

相關文章