OpenWRT下web總結(jié)
目 錄
目 錄 1
第1章 Web框架和實(shí)現(xiàn) 2
第1節(jié) luci框架 2
第2節(jié) controller下文件(*.lua)的編寫 2
第3節(jié) model下文件(*.lua)編寫 3
第4節(jié) view下文件(*.htm)編寫 4
第2章 web的訪問流程 5
第3章 lua學(xué)習(xí)資料 6
參考資料 7
第1章 Web框架和實(shí)現(xiàn)
第1節(jié) luci框架
OpenWRT的web采取的是luci框架,該框架采取了MVC的設(shè)計(jì)模式。在luci目錄下有3個(gè)重要的目錄:controller、model、view。將前真?zhèn)€htm文件放置在view下、邏輯控制文件放置在controller下、1些映照生成htm的模板放置在model下。
controller目錄:將所有用到的“邏輯上的處理”,通過注冊(cè)“樹節(jié)點(diǎn)”的方式組織起來(lái)。也就是說,將所有的邏輯上的處理,像樹的枝葉1樣組織起來(lái)。
Model:業(yè)務(wù)上的處理和生產(chǎn)htm的模板。
View:htm文件。
網(wǎng)上參考資料:
http://www.verydemo.com/demo_c101_i48675.html
http://www.verydemo.com/demo_c101_i42459.html
第2節(jié) controller下文件(*.lua)的編寫
如第1節(jié)所述,controller在luci框架中作用是邏輯上的組織。編碼時(shí)主要分為兩塊:
1 “枝注冊(cè)”---模塊注冊(cè)
2 “葉注冊(cè)”---節(jié)點(diǎn)注冊(cè)
1 模塊注冊(cè)
如:module("luci.controller.admin.system", package.seeall)
解釋:表示在luci/controller/admin/下注冊(cè)1個(gè)system模塊
2 節(jié)點(diǎn)注冊(cè)
行1:function index()
行2:entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1)
行3:end
行1和行3將表示1個(gè)函數(shù)塊
行2:表示在admin/system模塊下注冊(cè)1個(gè)system的節(jié)點(diǎn),節(jié)點(diǎn)序列為1,cbi(后面討 論)
備注:行2中的第4個(gè)參數(shù)序列很重要,它會(huì)影響在web上的顯示順序
Entry()函數(shù)分析:
參數(shù)1:插入的節(jié)點(diǎn)名字,如:{“admin”, “system”, “heyg1”},表示在admin下system中插入節(jié)點(diǎn)heyg1
參數(shù)2:插入的heyg1節(jié)點(diǎn)要做甚么(動(dòng)作時(shí)甚么),通常有下面幾種方式:
方式1:template方式,即調(diào)該節(jié)點(diǎn)會(huì)直接調(diào)用view下的相應(yīng)htm文件
方式2:cbi/form方式,會(huì)調(diào)用model下的相應(yīng)文件做相應(yīng)的處理
方式3:call方式,會(huì)調(diào)用本文件或?qū)胛募暮瘮?shù)
其他方式:
Alias:表示鏈接到其他某個(gè)節(jié)點(diǎn)
這里template(“heyg/heyg1”)會(huì)調(diào)用view/heyg/heyg1.htm文件
參數(shù)3:插入節(jié)點(diǎn)在對(duì)應(yīng)位置的名字,在web界面對(duì)應(yīng)菜單中的顯示名字
這里_(“heyg1”),在web的菜單中顯示為heyg1
參數(shù)4:插入結(jié)點(diǎn)的同等級(jí)的不同分類,或說是區(qū)分同等級(jí)下的其他結(jié)點(diǎn)的數(shù)字代號(hào)
這里3,不能和同級(jí)別下的其他選項(xiàng)重復(fù)
在菜單中級(jí)別是從小到大的顯示如:system(1)、Administration(2)、heyg1(3)....
Entry()函數(shù)的1些屬性解析:對(duì)插入1個(gè)結(jié)點(diǎn),該結(jié)點(diǎn)除有相應(yīng)的名稱和處理動(dòng)作以外,它還有1些相應(yīng)的屬性,我們可以手動(dòng)的設(shè)置它的屬性值類似于entry().dependent=false
官方文旦中給出以下屬性:
dependent :當(dāng)該節(jié)點(diǎn)的父節(jié)點(diǎn)丟失時(shí),將該節(jié)點(diǎn)保護(hù)起來(lái),不讓它被意外調(diào)用
leaf:如果該節(jié)點(diǎn)下還有其他子節(jié)點(diǎn),解析到該結(jié)點(diǎn)時(shí),就不向下繼續(xù)解析其子節(jié)點(diǎn)。
sysauth:在使用該節(jié)點(diǎn)時(shí)需要1個(gè)系統(tǒng)賬戶驗(yàn)證
I18n:定義了當(dāng)求頁(yè)面要求時(shí),哪些文件會(huì)自動(dòng)加載
其他屬性(純屬自己猜想,如有不正,多多指教,勿噴):
Index:將該節(jié)點(diǎn)作為同級(jí)目錄下的作為首頁(yè),或說默許的第1個(gè)頁(yè)面
官網(wǎng):http://luci.subsignal.org/trac/wiki/Documentation
博客:http://blog.csdn.net/ubuntucc/article/details/41083687
第3節(jié) model下文件(*.lua)編寫
http://www.tuicool.com/articles/zaUNfy
http://blog.chinaunix.net/uid⑵3780428-id⑷367351.html
第4節(jié) view下文件(*.htm)編寫
嵌入lua腳本、htm、js多種語(yǔ)句
第2章 web的訪問流程
http://blog.chinaunix.net/uid⑵3780428-id⑷367414.html
http://www.cnblogs.com/gnuhpc/archive/2013/08/31/3293643.html 中web的數(shù)據(jù)交互
第3章 lua學(xué)習(xí)資料
英文手冊(cè):
http://www.lua.org/manual/5.1/index.html
中文手冊(cè):
http://www.codingnow.com/2000/download/lua_manual.html
lua學(xué)習(xí)教程:
http://lua-users.org/wiki/TutorialDirectory
大多數(shù)lua語(yǔ)句分析中出現(xiàn)的函數(shù)接口:
http://blog.csdn.net/chinazhd/article/details/7776994
NB的博客和學(xué)習(xí)文章
http://blog.csdn.net/xoyojank/article/details/12762909
http://xuzhihong1987.blog.163.com/blog/static/26731587201171152614685/
參考資料
LuCI上配置Makefile:
http://luci.subsignal.org/trac/wiki/Documentation/Modules
CBI:
http://luci.subsignal.org/trac/wiki/Documentation/CBI
Luci:
http://luci.subsignal.org/trac/wiki/Documentation/ModulesHowTo
Luci類庫(kù)的函數(shù)定義和使用說明:
http://luci.subsignal.org/api/luci/index.html
UCI接口:
http://wiki.openwrt.org/doc/devel/config-scripting