DeerOJ的前端框架介紹-Web資料夾和App資料夾(route.php)

山城甘草發表於2024-05-30

Web資料夾下的結構

DeerOJ的前端框架參考了部分 Lavarel 框架,做到兼顧程式碼的可維護性和可閱讀性。具體的維護目錄檔案結構如下:

注意到web資料夾下的 index.php 這是整個前端程式的 main 程式 ,當服務段收到請求後, 根據 .htaccess 檔案指定使用 index.php 檔案來生成網頁,並把網頁資料返回到前端進行渲染呈現。

App資料夾下的結構

網頁的生成構造需要一些基本要素,web資料夾下的app資料夾中儲存著大量的基本要素。app資料夾下的檔案結構如下:

資料夾下包含一些子資料夾和檔案,這裡選取一些重要的檔案來進行解析:

route.php檔案

route.php 是整個前端程式的路由, index.php 會把前端傳送的路由資訊傳遞給route.php ,檔案會根據傳送的路由資訊,結合 model 資料夾下的 Route.php 呼叫對應的php程式,從而來實現生成網頁(HTML檔案)的功能。具體解析如下:

路由模式定義

給出如下程式碼

這些模式定義了 URL 引數的格式。比如,username 只能包含字母、數字和下劃線,長度在 1 到 20 之間;idcontest_id 是數字,長度在 1 到 10 之間;rand_str_id 是一個長度為 20 的字串,由數字和大小寫字母組成。

路由組定義


這個路由組限定了所有路由都在指定域名下可用。UOJConfig::$data['web']['main']['host'] 獲取的是配置中的主機名。

具體路由配置


這些路由使用 Route::any 方法配置,表示無論是 GET 還是 POST 請求,都會路由到對應的 PHP 檔案。例如,請求根路徑 / 會被路由到 index.php 處理,請求 /problems 會被路由到 problem_set.php 處理。

使用者相關路由


這些路由處理使用者登入、註冊、忘記密碼、重置密碼,以及檢視和修改使用者資訊等操作。

評測相關路由


這些路由處理與評測系統相關的操作,例如提交評測任務、同步評測客戶端、下載提交記錄、臨時檔案、題目和評測器等。

相關文章