OpenWRT下web框架初尝试之总结
目 录
OpenWRT的web采用的是luci框架,该框架采用了MVC的设计模式。在luci目录下有三个重要的目录:controller、model、view。将前端的htm文件放置在view下、逻辑控制文件放置在controller下、一些映射生成htm的模板放置在model下。
controller目录:将所有用到的“逻辑上的处理”,通过注册“树节点”的方式组织起来。也就是说,将所有的逻辑上的处理,像树的枝叶一样组织起来。
Model:业务上的处理以及生产htm的模板。
View:htm文件。
网上参考资料:
http://www.verydemo.com/demo_c101_i48675.html
http://www.verydemo.com/demo_c101_i42459.html
如第一节所述,controller在luci框架中作用是逻辑上的组织。编码时主要分为两块:
1 “枝注册”---模块注册
2 “叶注册”---节点注册
1 模块注册
如:module("luci.controller.admin.system", package.seeall)
解释:表示在luci/controller/admin/下注册一个system模块
2 节点注册
行1:function index()
行2:entry({"admin", "system", "system"}, cbi("admin_system/system"), _("System"), 1)
行3:end
行1和行3将表示一个函数块
行2:表示在admin/system模块下注册一个system的节点,节点序列为1,cbi(后面讨 论)
备注:行2中的第四个参数序列很重要,它会影响在web上的显示顺序
Entry()函数分析:
参数一:插入的节点名字,如:{“admin”, “system”, “heyg1”},表示在admin下system中插入节点heyg1
参数二:插入的heyg1节点要做什么(动作时什么),通常有下面几种方式:
方式一:template方式,即调该节点会直接调用view下的相应htm文件
方式二:cbi/form方式,会调用model下的相应文件做相应的处理
方式三:call方式,会调用本文件或者导入文件的函数
其他方式:
Alias:表示链接到其他某个节点
这里template(“heyg/heyg1”)会调用view/heyg/heyg1.htm文件
参数三:插入节点在对应位置的名字,在web界面对应菜单中的显示名字
这里_(“heyg1”),在web的菜单中显示为heyg1
参数四:插入结点的同等级的不同分类,或者说是区别同等级下的其他结点的数字代号
这里3,不能和同级别下的其他选项重复
在菜单中级别是从小到大的显示如:system(1)、Administration(2)、heyg1(3)....
Entry()函数的一些属性解析:对于插入一个结点,该结点除了有相应的名称和处理动作之外,它还有一些相应的属性,我们可以手动的设置它的属性值类似于entry().dependent=false
官方文旦中给出以下属性:
dependent :当该节点的父节点丢失时,将该节点保护起来,不让它被意外调用
leaf:如果该节点下还有其他子节点,解析到该结点时,就不向下继续解析其子节点。
sysauth:在使用该节点时需要一个系统账户验证
I18n:定义了当求页面请求时,哪些文件会自动加载
其他属性(纯属自己猜测,如有不正,多多指教,勿喷):
Index:将该节点作为同级目录下的作为首页,或者说默认的第一个页面
官网:http://luci.subsignal.org/trac/wiki/Documentation
博客:http://blog.csdn.net/ubuntucc/article/details/41083687
http://www.tuicool.com/articles/zaUNfy
http://blog.chinaunix.net/uid-23780428-id-4367351.html
嵌入lua脚本、htm、js多种语句
http://blog.chinaunix.net/uid-23780428-id-4367414.html
http://www.cnblogs.com/gnuhpc/archive/2013/08/31/3293643.html 中web的数据交互
英文手册:
http://www.lua.org/manual/5.1/index.html
中文手册:
http://www.codingnow.com/2000/download/lua_manual.html
lua学习教程:
http://lua-users.org/wiki/TutorialDirectory
大多数lua语句分析中出现的函数接口:
http://blog.csdn.net/chinazhd/article/details/7776994
NB的博客和学习文章
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类库的函数定义和使用说明:
http://luci.subsignal.org/api/luci/index.html
UCI接口:
http://wiki.openwrt.org/doc/devel/config-scripting
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。