MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
MVC模式最早由Trygve Reenskaug在1978年提出[1] ,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件设计模式。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式通过对复杂度的简化,使程序结构更加直观。软件系统通过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以通过自身的专长分组:
- (控制器Controller)- 负责转发请求,对请求进行处理。
- (视图View) - 界面设计人员进行图形界面设计。
- (模型Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
(以上来处维基百科)
1.M: model
Model下面有一个cbi目录,正如框架中说到的,CBI就是用来一个产生、解析、验证一个页面文件,并且读写UCI配置文件的。
Model/cbi下的lua文件是以/libs/web/luasrc/view/cbi下的htm文件为模板来形成htm文件的。比如map方法就对应map.htm。
Mode/cbi和libs/web/luasrc/view/cbi下的lua脚本也主要由cbi.lua来解析。
2.V: view
就是htm文件,后缀只能是htm。
3.C: controller
3.1 lua 文件说明
1)index.lua 这个文件定义了node ,最外面的节点,最上层菜单的显示等等。
2)其他的 lua 文件里,定义了其他菜单的显示和html 以及业务处理路径。每个文件对应一个菜单项。
例如system.lua
1)module是对应文件的
2)function index 定义了菜单,
比如这一句entry({"mini", "system", "reboot"}, call("action_reboot"), i18n("reboot"), 100)
第1 项为菜单入口:{"mini", "system", "reboot"}中,mini 是最上层的菜单,即为用户项; system 为一个具体的菜单;reboot 为这个菜单的子菜单;
第2项为菜单对应的页面,可以是lua 的源代码文件,也可以是 html 页面。alias 、cbi 、form 、call 等定义了此菜单相应的处理方式。
form 和 cbi 对应到 model/cbi 相应的目录下面,那里面是对应的定制好的 html 和 lua 业务处理。
alias是等同于别的链接
call 调用了相应的 action_function
template直接链接到view 相应目录下面的 htm 页面
第3项为i18n 显示(即语言替换)
第4项为现实的顺序,这个数字越小,显示越靠前,靠上。
4.用户管理
luci 是一个单用户框架,公用的模块放置在 */luci/controller/ 下面,各个用户的模块放置在 */luci/controller/ 下面对应的文件夹里面,比如 admin 登录,最终的页面只显示 /luci/controller/admin 下面的菜单。这样既有效的管理了不同管理员的权限。