前言
在《LUCI启动流程介绍》里,我们介绍了LUCI的启动主体是dispatcher.lua的dispatch()函数,他通过解析controller目录下的lua文件,定义node节点,构建node-tree来进行页面管理。本节将详细介绍M(model)、V(view)、C(controller)各个文件的功能以及如果添加新的node节点。
controller目录
因为dispatch()函数通过解析controller目录下的lua文件构建node-tree,所以我们优先看一下这个目录的lua脚本是如何定义的。以controller/admin/status.lua的部分代码为例。
module("luci.controller.admin.status", package.seeall)
function index()
entry({"admin", "status"}, alias("admin", "status", "overview"), _("Status"), 20).index = true
entry({"admin", "status", "overview"}, template("admin_status/index"), _("Overview"), 1)
entry({"admin", "status", "iptables"}, call("action_iptables"), _("Firewall"), 2).leaf = true
entry({"admin", "status", "processes"}, cbi("admin_status/processes"), _("Processes"), 6)
end
function action_iptables()
......
end
1、定义模块入口---> module("luci.controller.admin.status", package.seeall)
此行说明了程序和模块的路径名称,比如在controller/admin目录创建一个status.lua,那么就