前提:
需要懂一点点WEB开发技术,和lua,不懂得没关系,我的附件里有自己收藏的lua教程,可以看看
大部分路由器的提供了web 配置方式,openwrt也不例外,有了web 界面就可以简单配置有关路由器的一些参数了,比如ip 地址,无线参数等,而且如果做自己的应用的话web 界面也少不了。Openwrt提供了两种web 界面,luci和webif,这两种界面各有千秋。Luci是官方提供的标准界面,webif是第三方开发的界面。他们有一个共同点是他们都是脚本,解释性语言。这就为他们的扩张提供了方便。
1.Luci编译:
首先介绍luci 的编译,luci的编译比较简单。首先进入openwrt 的配置界面,进入luci 的界面选择页面,进入luci->Collections 界面,选中luci,这样基本的luci 界面就选中了,然后保存退出,编译即可,编译参考前面编译的帖子,这样编译出的固件即具有了luci 界面,
*
2.Luci和web的一些介绍:
luci 包括两部分内容,它是由lua 和uci 合并起来的,lua是一种执行效率非常高的解释型语言,uci是配置openwrt 的默认工具,web,任何一个web界面都包括两部分内容,即运行web的web服务器,还有那些写界面的界面语言,openwrt的web 服务器默认采用uhttpd,端口80,web的界面语言就是上面介绍的luci咯,
3.Luci页面编辑:
Luci的用户界面目录在/user/lib/lua/luci下面,额外说明,luci是基于MVC架构的哟,熟悉WEB开发的,比如.net或者JAVA 的springMVC,又或者会做struts2,hibernate,spring的基本秒分钟拿下这个知识点,不是做WEB开发的,或者没有接触过的,就看下我的介绍吧,熟悉的跳过咯,/usr/lib/lua/luci/下有三个目录model、view、controller,他们就对应MVC中的M VC,面简单介绍生成界面的方法。其中M 是已经生成的web 控件,其实这里就是写好的lua脚本,V是给外部提供的一些web 界面,C控制其V 和M 的显示方式,现在就进入controller 看看他的内容,其实它的入口地址在controller的admin 目录下面,里面的各个lua 文件就是各个入口,比如system.lua 就对应的主界面的system 栏下面,咱们现在希望在system 栏中增加一个自定义的界面,这里为了方面描述只显示helloworld。每个功能界面的入口地址为对应的lua 文件中entry 功能函数,entry功能函数的原型为
entry(path, target, title=nil,order=nil)
前面两个参数是必须的,后面两个是可选的。Path形如(admin,system,reboot),entry 根据这些属性创建节点,比如上面内容代表在system 标签中的reboot 页面,target是这里的重点,它描述了当用户调用这个界面所执行的行为。这里主要由三种行为,call、template、cbi,其中 call为调用文件中的功能函数,template为调用view 中的html 界面,cbi为调用mode 中的lua 文件。Title是在页面中显示的内容,
order 是显示的顺序,顺序越小显示内容越靠前。
下面在system.lua 中增加一条
entry({"admin","system", "helloworld"},template("admin_system/helloworld"), _("helloworld
"), 99)
其中第一个参数代表一个节点,第二个参数,调用view/admin_system/helloworld.htm 文件,第三个参数为显示的名字,第四个参数为显示顺序,这里在最后显示,其中helloworld.htm 文件的内容如下:
%+footer%>
<h1><%:HelloWorld%></h1>
<%+footer%>
执行完之后可以看下界面的显示,
|