1. 程式人生 > >OpenWRT下web框架初嘗試之總結

OpenWRT下web框架初嘗試之總結

OpenWRTweb總結

目  錄

    目  錄 1

參考資料 7

第一章 Web框架以及實現

第一節 luci框架

OpenWRTweb採用的是luci框架,該框架採用了MVC的設計模式。在luci目錄下有三個重要的目錄:controllermodelview。將前端的htm檔案放置在view下、邏輯控制檔案放置在controller下、一些對映生成htm的模板放置在model下。

controller目錄:將所有用到的“邏輯上的處理”,通過註冊“樹節點”的方式組織起來。也就是說,將所有的邏輯上的處理,像樹的枝葉一樣組織起來。

Model:業務上的處理以及生產

htm的模板。

Viewhtm檔案。

網上參考資料:

第二節 controller下檔案(*.lua)的編寫

如第一節所述,controllerluci框架中作用是邏輯上的組織。編碼時主要分為兩塊:

“枝註冊”---模組註冊

“葉註冊”---節點註冊

模組註冊

如:module("luci.controller.admin.system", package.seeall)

解釋:表示在luci/controller/admin/下注冊一個system模組

節點註冊

1function index()

2entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1)

3end

1和行3將表示一個函式塊

2表示在admin/system模組下注冊一個system的節點,節點序列為1cbi(後面討  論)

備註:行2中的第四個引數序列很重要,它會影響在web上的顯示順序

Entry()函式分析:

引數一:插入的節點名字,如:{adminsystemheyg1},表示在adminsystem中插入節點heyg1

引數二:插入的heyg1節點要做什麼(動作時什麼),通常有下面幾種方式:

方式一:template方式,即調該節點會直接呼叫view下的相應htm檔案

方式二:cbi/form方式,會呼叫model下的相應檔案做相應的處理

方式三:call方式,會呼叫本檔案或者匯入檔案的函式

其他方式:

Alias:表示連結到其他某個節點

這裡template(heyg/heyg1)會呼叫view/heyg/heyg1.htm檔案

引數三:插入節點在對應位置的名字,在web介面對應選單中的顯示名字

這裡_(heyg1),在web的選單中顯示為heyg1

引數四:插入結點的同等級的不同分類,或者說是區別同等級下的其他結點的數字代號

這裡3,不能和同級別下的其他選項重複

在選單中級別是從小到大的顯示如:system1)、Administration(2)heyg1(3)....

Entry()函式的一些屬性解析:對於插入一個結點,該結點除了有相應的名稱和處理動作之外,它還有一些相應的屬性,我們可以手動的設定它的屬性值類似於entry().dependent=false

官方文旦中給出以下屬性:

dependent :當該節點的父節點丟失時,將該節點保護起來,不讓它被意外呼叫

leaf:如果該節點下還有其他子節點,解析到該結點時,就不向下繼續解析其子節點。

sysauth:在使用該節點時需要一個系統賬戶驗證

I18n:定義了當求頁面請求時,哪些檔案會自動載入

其他屬性(純屬自己猜測,如有不正,多多指教,勿噴):

Index:將該節點作為同級目錄下的作為首頁,或者說預設的第一個頁面

第三節 model下檔案(*.lua)編寫

第四節 view下檔案(*.htm)編寫

嵌入lua指令碼、htmjs多種語句

第二章 web的訪問流程

第三章 lua學習資料

英文手冊:

http://www.lua.org/manual/5.1/index.html

中文手冊:

lua學習教程:

大多數lua語句分析中出現的函式介面:

NB的部落格和學習文章

參考資料

LuCI上配置Makefile: 

CBI: 

Luci: 

Luci類庫的函式定義和使用說明: 

UCI介面: