luci开发小插件_luci框架-LUA的一个web框架使用

本文介绍了LUCI,一个基于OpenWRT的Web框架,用于管理配置界面。LUCI采用MVC架构,易于扩展。文章详细解释了LUCI的启动过程、MVC结构,包括用户管理、Controller文件夹中的Lua文件功能,并展示了如何定义菜单和处理业务。此外,还简单介绍了Model的业务处理和页面生成,以及View部分的HTML生成。
摘要由CSDN通过智能技术生成

转自:http://blog.csdn.net/initphp/article/details/17527639

LUCI 这个在百度上搜索除了一篇我的百度文库 luci 的介绍文章之外,前三页都是些不知所云的名词(足见百度在专业领域的搜索之烂),我却在大学毕业的大半年的大部分时间里与它纠结,由于开始的发懵到后来逐渐感觉到这家伙还很好玩的,现在就把我对 luci 的浅显认识介绍给大家。

有关luci 的各个方面,你几乎都可以从这里获得,当然,只是浅显的获得, luci 的文档写的还算比较全,但是写的稍显简略,开始看的时候会有一点不知所措。

UCI  熟悉 openwrt 的人都会有所了解,就是 Uni fi ed Con fi guration Interface 的简称,而 luci 这个 openwrt上的默认 web 系统,是一个独立的由严谨的德国人开发的 web 框架,是 Lua  Con fi guration Interface 的简称,如果在您的应用里, luci 是对 openwrt 的服务,我们就有必要做一下 uci 的简介,我这里就不说了,见链接:

有的时候,我们开发的luci 是在自己的 Linux PC 上开发,在普通的 linux 上,一般是没有 uci 命令的,为了开发方便,可以手动编译一下,方法见链接:

OK ,之前罗里罗嗦的说了很多,现在就进入正题,进入正题的前提是你已经 make install 正确的安装了 lua  ,luci ,以及编译好链接了相关的 so (如果你需要,比如 uci.so nixio.so ),以及 make install 正确 web server,(我用的 web server 是 thttpd ,也编译过 mongoose , lighttpd ,在这三个之中, lighttpd 是功能最完善的, mongoose 是最小巧的)。

进入正题:

一:luci 的启动

在web server 中的 cgi-bin 目录下,运行 luci 文件(权限一般是 755 ), luci 的代码如下:

#!/usr/bin/lua      --cgi的执行命令的路径

require"luci.cacheloader"    --导入cacheloader包

require"luci.sgi.cgi"         --导入sgi.cgi包

luci.dispatcher.indexcache = "/tmp/luci-indexcache"   --cache缓存路径地址

luci.sgi.cgi.run()  --执行run方法,此方法位于*/luci/sgi/cgi.lua中

run方法的主要任务就是在安全的环境中打开开始页面(登录页面),在 run 中,最主要的功能还是在dispatch.lua 中完成。

运行luci 之后,就会出现登录界面:

-bash-4.0# pwd

/var/www/cgi-bin

-bash-4.0# ./luci

Status: 200 OK

Content-Type: text/html;

charset=utf-8

Cache-Control: no-cache

Expires: 0

HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

二:LUCI 的 MVC

1:用户管理:

在luci 的官方网站说明了 luci 是一个 MVC 架构的框架,这个 MVC 做的可扩展性很好,可以完全的统一的写自己的 html 网页,而且他对 shell 的支持相当的到位,(因为 luci 是 lua 写的, lua 是 C 的儿子嘛,       与 shell 是兄弟)。在登录界面用户名的选择很重要,      luci 是一个单用户框架,公用的模块放置在 */luci/controller/ 下面,各个用户的模块放置在 */luci/controller/ 下面对应的文件夹里面,比如              admin 登录,最终的页面只显示 /luci/controller/admin 下面的菜单。这样既有效的管理了不同管理员的权限。

2: controller 文件夹下的 lua 文件说明:(以 mini 用户为例)

在mini 目录下面,会有一个 index.lua 文件,简略的代码如下:

module("luci.controller.mini.index", package.seeall)

17

18  function index()

19      luci.i18n.loadc("admin-core")

20      local i18n = luci.i18n.translate

21

22      local root = node()

23      if not root.lock then

24          root.target = alias("mini")

25          root.index = true

26      end

27

28      entry({"about"}, template("about")).i18n = "admin-core"

29

30      local page   = entry({"mini"}, alias("mini", "index"), i18n("

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值