Vue3 + Express + getopts 极客范网页终端项目(YuIndex)
Vue3 + Express + getopts 极客范网页终端项目(YuIndex)
基于 Vue 3 + Node.js 的全栈项目,从 0 实现 Web 终端组件和命令系统,打造极客范的浏览器主页应用。掌握 TypeScript、Vite、Pinia 状态管理、插件化架构设计,学习现代前端工程化和系统架构设计。难度较大,适合想进阶前端和设计模式的朋友学习。

一、项目介绍

这是一套以Web终端开发实战为核心的项目教程,基于 Vue 3 + Node.js 开发 极客范儿的浏览器主页应用,带大家掌握现代前端开发的核心技术,学会如何从0到1构建一个功能完整的Web终端系统。

极客范网页终端应用是一个很特别的浏览器主页,支持使用输入命令的方式来操作,目标是帮你在一个web终端中高效完成所有的事情!用户可以通过命令行的方式快速搜索、翻译、听音乐、管理待办事项等,真正体验到Linux终端的魅力。

在线体验:http://yuindex.yupi.icu

视频演示:https://www.bilibili.com/video/BV19B4y1Y7m8/

开源地址:https://github.com/liyupi/yuindex

项目导学视频:https://www.codefather.cn/course/1966423442205900801?contentType=video&tabKey=videoList

此外,这也是一个功能强大的web终端组件。开发者可以在它的基础上定制自己的web终端,并且可以在终端中集成任何内容,具有很强的扩展性。

当然,学会这个项目后,你不仅能开发极客范的终端主页,而是能灵活开发各种命令行风格的Web应用,尽情发挥自己的想象力吧!

二、项目优势

项目收获

本项目选题新颖、技术全面,用一套实战教程将现代前端开发的核心技术一网打尽,帮你掌握从前端到后端的全栈开发能力,给你的简历和求职大幅增加竞争力。

你将掌握下面的知识:

  • Vue 3 Composition API 和响应式开发

  • TypeScript 类型系统和项目实践

  • Vite 构建工具和现代前端工程化

  • Pinia 状态管理和数据流设计

  • 自定义组件开发和组件通信

  • Web终端UI设计和交互逻辑

  • 命令解析系统架构设计

  • 插件化架构和可扩展性设计

  • Node.js 后端开发和API设计

  • Express框架和中间件使用

  • MySQL 数据库设计和 Sequelize ORM

  • 第三方 API 集成和数据处理

  • Docker 容器化部署

项目还有其他优势:

  • 前后端全栈实战,不仅会用现成的组件,还会自己写!

  • 基于真实业务场景设计,涵盖用户系统、搜索、翻译等实用功能!

  • 分享大量前端架构设计经验,掌握最佳实践!

此外,还能学会很多系统设计、抽象思维、问题排查的方法,提升独立解决复杂问题的能力。

鱼皮系列项目优势

鱼皮原创项目系列以 实战 为主,用 全程直播 的方式,从 0 到 1 带大家学习技术知识,并立即实践运用到项目中,做到学以致用。

此外,还提供如下服务:

  • 详细的文字教程或直播笔记
  • 完整的项目源码
  • 1 对 1 答疑解惑
  • 专属项目交流群
  • ⭐️ 现成的简历写法(直接写满简历)
  • ⭐️ 项目的扩展思路(拉开和其他人的差距)
  • ⭐️ 项目相关面试题、题解和真实面经(提前准备,面试不懵逼)
  • ⭐️ 前端 + Java 后端万用项目模板(快速创建项目)

比起看网上的教程学习,鱼皮项目系列的优势:从学知识 => 实践项目 => 复习笔记 => 项目答疑 => 简历写法 => 面试题解的一条龙服务

从需求分析、技术选型、项目设计、项目初始化、Demo 编写、前后端开发实现、项目优化、部署上线等,每个环节我都 从理论到实践 给大家讲的明明白白、每个细节都不放过!

对比维度跟学鱼皮项目自学网上免费项目⭐️ 鱼皮项目优势
项目选题✅ 选题新颖,刻意避开网上热门项目传统项目场景(博客、商城、管理系统)增加区分度,提高简历通过率
学习人数✅ 少,不容易撞车百万以上,烂大街增加区分度,提高简历通过率
教学方式✅ 全程直播,带你敲每一行代码、带你踩坑和解决 Bug,不漏过每一个细节录制课程,视频虽然看起来简短、一帆风顺,但你遇到错误无从下手降低学习门槛,减少学习时长
直播笔记✅ 详细的官方笔记 + 精选学员优质笔记有笔记,但未经筛选学到更多知识细节
视频内容✅ 项目教程 + 经验分享项目教程学到更多编程经验
项目源码✅ 完整源码仓库 + 每章的提交记录 + 定期更新只有代码包、不更新节省时间,避免踩坑
项目答疑✅ 各项目交流群 + 答疑解惑 + 常见问题整理无免费的答疑服务,遇到问题自行解决节省时间
简历写法✅ 现成的简历写法节省时间、提高简历通过率
项目扩展✅ 给出扩展思路 + 学员作品共享开拓思路、拉开和其他人的差距
项目面试✅ 项目相关面试题、题解和真实面经提前准备,面试不懵逼

编程导航已有 **近 20 套项目教程!**每个项目的学习重点不同,几乎全都是前端 + 后端的 全栈项目

详细请见:https://codefather.cn/course(在该页面右侧有教程推荐和学习建议)

往期项目介绍视频:https://bilibili.com/video/BV1YvmbYbEgS

三、项目功能梳理

项目中,我们将开发一个极客范儿的 Web 终端应用,支持命令行操作的浏览器主页,以及一个功能强大的Web终端组件。

具体需求如下:

  • Web终端组件:从0开始实现的web终端控制台,支持命令输入、输出展示、历史记录、快捷键、命令提示等完整功能

  • 命令系统:独立于终端的命令解析执行引擎,支持命令注册、匹配、解析、执行,以及子命令机制

  • 搜索功能:支持从百度、Google、GitHub、知乎等多个平台快速搜索内容

  • 翻译功能:集成百度翻译API,支持多语言翻译

  • 音乐功能:集成网易云音乐API,支持在线听音乐

  • 空间管理:类似收藏夹的功能,可以存储和管理网页链接

  • 用户系统:支持用户注册、登录,个性化配置同步

  • 终端配置:支持更换背景、开关提示等个性化定制

  • 其他实用工具:待办事项、定时器、网络检测等

四、技术选型

项目以现代前端技术栈为核心,涉及到多种主流前后端技术的运用。

前端技术栈

  • Vue 3 + Composition API

  • Vite 构建工具

  • TypeScript 类型系统

  • Ant Design Vue 3 组件库

  • Pinia 2 状态管理

  • Eslint + Prettier 代码规范

依赖库:

  • axios 网络请求

  • dayjs 时间处理

  • lodash 工具库

  • getopts 命令参数解析

后端技术栈

  • Node.js + Express

  • MySQL + Sequelize ORM

  • Redis 缓存和Session存储

  • express-session 会话管理

第三方服务:

  • 百度翻译 API

  • 网易云音乐 API

  • 新浪壁纸 API

五、架构设计

设计理念

整个项目采用插件化和模块化的设计思想,主要体现在两个方面:

  1. 开放性:采用类插件化设计,便于开发者自定义新命令,且能够通过配置自动生成帮助提示

  2. 重前端轻后端:考虑到扩展性、安全性以及实现的方便,除了核心模块外,尽量不请求后端

核心架构

系统分为 3 个核心模块,各模块职责分明:

  • 微终端:UI 展示和终端交互逻辑,负责用户输入输出、命令历史、快捷键等

  • 命令系统:连接微终端和命令集的中介者,负责匹配、解析和执行命令,并通过终端提供的操作接口给予其反馈

  • 命令集:各种不同功能的命令定义和实现,支持插件化扩展

前端架构图:

微终端设计

从 0 开始实现的 web 终端控制台,包含以下模块:

  • 终端输入:常驻 Input 框,负责接收用户命令

  • 终端输出:负责展示用户的命令及执行结果等,支持以下三种类型的输出

  • 命令类型:输入命令 + 结果列表

  • 文本类型:单行文本展示,内置 5 种不同的展示状态(成功、错误、警告、信息、系统等)

  • 自定义组件类型:可以自由定制要展示的内容

  • 快捷键:更方便地操作终端,使用 document.onkeydown 全局按键事件实现

  • 开放接口:提供一组操作终端的 API,供命令系统调用,比如清屏、立即输出等

  • 命令历史:记录用户输入的命令结果,使用 Vue 3 Composition API 封装部分逻辑

  • 命令提示:根据用户的输入给出提示,使用 Vue 3 Composition API 独立封装

命令系统设计

一套独立于终端的命令解析执行引擎,包含以下模块:

  • 注册器:用于注册和管理可被匹配的命令集
  • 匹配器:根据输入文本匹配到对应的命令
  • 解析器:从输入文本中解析出参数和选项
  • 执行器:执行命令,完成操作
  • 子命令机制:支持递归解析子命令

为什么要自己写终端?

  1. 鱼皮本来打算使用现成的 xterm.js,但实际使用中发现它的文档比较少、问题难解决,解决问题消耗的时间足够自己写一套新的 web 终端了。而且它更适用于和后端服务器强交互的场景,与本项目的定位不符。

  2. 开源的 web 终端很少,想给开源贡献一份力。

  3. 帮助自己复习 Vue,突破个人系统开发设计能力的边界。

六、学习大纲

第 1 期:项目总览

  • 项目介绍

  • 项目优势

  • 项目功能梳理

  • 技术选型

  • 架构设计

  • 学习大纲

第 2 期:前端基础架构

  • Vue 3 + Vite 项目初始化
  • Ant Design Vue 组件库集成
  • 开发环境配置
  • Pinia状态管理配置
  • 项目目录结构设计
  • 项目启动

第 3 期:Web 终端组件

  • 终端 UI 设计和布局

  • 输入输出组件

  • 命令历史功能

  • 快捷键系统实现

  • 命令提示功能

  • 终端配置和主题

第 4 期:命令系统

  • 命令系统架构设计思路
  • 命令类型定义和接口设计
  • 命令注册器
  • 命令执行器
  • 子命令机制
  • 插件化架构

第 5 期:核心命令开发

  • 搜索命令

  • 翻译命令

  • 音乐播放命令

  • 空间管理系统

  • 终端控制命令

  • 实用工具

第 6 期:后端开发实战

  • Node.js + Express 项目搭建

  • 数据库设计和 Sequelize 开发

  • 用户系统开发

  • 第三方 API 集成

  • 全局异常处理

  • 跨域配置

第 7 期:部署上线