OUI 是一套面向 OpenWrt 的 Web 界面开发框架,采用 lighttpd + Lua-eco + Vue3 + Vite + Element Plus 技术栈,实现前后端彻底分离。它支持多用户与细粒度 ACL 权限管理,并沿用类似 LuCI 的模块化设计,每个页面独立打包为 IPK。开发者可以用现代前端工程化方式构建路由器管理界面,兼顾开发效率与固件体积,MIT 协议开源。
适用人群:嵌入式与路由器固件开发者,尤其是需要为 OpenWrt/LEDE 定制管理界面的工程师;熟悉 Vue 生态、希望把现代前端技术栈带入嵌入式 Web 的前端开发者;为 OpenWrt 开发插件或打造品牌化固件的团队,需要细粒度权限与模块化打包能力。
适用场景:为 OpenWrt/LEDE 路由器定制企业级或品牌化的 Web 管理后台;以 IPK 插件形式开发并分发 OpenWrt 功能模块页面;在 Ubuntu 等桌面环境中做前后端联调,快速验证界面与 API 设计。
推荐理由:如果你厌倦了 LuCI 的服务端渲染和陈旧交互,OUI 提供了难得的现代化替代方案:Vite 热更新、Element Plus 组件库、Lua-eco 异步后端与 ACL 权限一应俱全。它既能提升界面质感,也能规范插件打包方式,是 OpenWrt 界面开发值得认真评估的新选择。
项目定位与背景
OpenWrt 作为最流行的开源路由器固件,其 Web 管理界面长期几乎被 LuCI 垄断。LuCI 以 Lua 与 CBI 为核心,成熟稳定,但技术栈停留在服务端渲染时代,页面交互体验与现代前端工程化差距明显。OUI 正是针对这一痛点诞生的框架,由 zhaojh329 主导,用 lighttpd + Lua-eco + Vue3 + Vite + Element Plus 重新定义 OpenWrt Web 界面的开发方式,目前在 GitHub 上获得约 1.1k Stars、219 Forks,采用 MIT 协议。它的定位很明确:不是又一套主题皮肤,而是一套完整的、前后端分离的界面开发框架。
核心功能与技术架构
OUI 的整体链路是 lighttpd 负责静态资源与请求分发,Lua-eco 承担后端 API 与业务逻辑,前端由 Vue3 与 Element Plus 构建,并借助 Vite 完成打包。这一组合的关键在于前后端彻底解耦:前端只通过 HTTP 接口与后端通信,开发者可以独立调试页面,不必每次改动都重新刷固件。权限层面,OUI 内置多用户与 ACL 管理,支持细粒度权限控制,不同角色只能看到并操作被授权的页面与接口,这比 LuCI 默认的粗放式权限更贴近实际生产需求。模块化方面,OUI 借鉴了 LuCI 的思路,每个页面单独打包成一个 IPK,按需安装、按需卸载,既控制固件体积,也方便第三方开发者以插件形式分发功能。
创新点与亮点
最值得关注的是它对现代前端工程化的拥抱。Vite 带来的热更新与构建速度,Element Plus 提供的成熟组件库,让路由器界面第一次拥有接近后台管理系统的开发体验与视觉质感。其次是 Lua-eco 的引入,它是同一作者维护的协程化 Lua 运行环境,在保留 Lua 轻量优势的同时改善并发与异步编程模型,为后端 API 提供了更现代的运行时。第三是前后端分离带来的接口契约化,前端页面成为可复用资产,同一套 UI 可以适配不同后端实现,也为将来替换后端语言留出空间。最后是文档体验,项目同时提供中文与英文文档,并给出 Ubuntu 快速运行方案,明显降低了试错成本。
与同类项目对比
与 LuCI 相比,OUI 的优势在于开发体验、界面观感和权限模型,劣势则在于生态积累。LuCI 经过十余年沉淀,插件数量庞大、社区问答丰富,几乎所有 OpenWrt 教程都以它为准;OUI 作为后来者,生态仍在建设中,愿意迁移的插件作者有限。与直接用 Vue 写一套自定义界面相比,OUI 提供了打包规范、权限体系和固件集成方案,避免了重复造轮子。可以说,LuCI 是稳健的默认选项,而 OUI 是面向新项目的现代化选择。
上手指南与快速开始
建议先在 Ubuntu 上按官方文档搭好开发环境,跑通前后端联调,再进入固件集成阶段。开发节奏上,前端用 Vite 起本地服务专注写页面,后端用 Lua-eco 编写 API,两者通过约定路径对接。熟悉后可按 IPK 模板把页面封装成独立插件,逐步替换或补充现有 LuCI 界面。需要注意 Lua-eco、lighttpd 配置以及 OpenWrt 打包工具链的版本兼容,初次集成时预留一定调试时间。
总结与展望
OUI 的价值不只是一套好看的界面,而是把现代前端工程化方法论带进了嵌入式 Web 开发这一相对保守的领域。它适合对界面体验有要求、且愿意投入学习成本的项目。随着 Lua-eco 生态完善和更多插件贡献者加入,OUI 有潜力成为 OpenWrt 界面开发的重要选项,但目前仍需在文档细节、组件丰富度和社区规模上持续补课。
项目信息
| 项目名称 | zhaojh329/oui |
| 编程语言 | JavaScript |
| Star 数 | 1123 |
| Fork 数 | 219 |
| 主题标签 | lede, lua, openwrt, ui, vue, web |