ai全栈软件开发工程师day10
Element Plus 组件库与页面开发实战2026-07-12|第三阶段 · AI 应用 Web 开发|预计阅读 25 分钟文章目录一、今日学习内容概览二、Element Plus 组件库入门与主题定制三、登录页面开发:表单验证与 JWT 鉴权四、文章列表页:Table 分页排序与搜索过滤五、创作页面:富文本编辑器与 AI 生成六、路由守卫与权限控制七、今日踩坑记录八、收获总结九、明日学习计划第三阶段的第三天,今天终于进入了最激动人心的环节——页面开发实战!前两天的基础工作(Vue 3 语法、Pinia 状态管理、Axios 请求封装)都是为了今天能高效地搭建出"智能写手"前端项目的核心页面。Element Plus 是 Vue 3 生态中最成熟的企业级 UI 组件库,背靠饿了么大前端团队,组件丰富、文档完善、社区活跃。今天我将用它来完成三个核心页面的开发:登录页、文章列表页、创作页。同时整合之前封装好的 Axios 和 Pinia,打通从前端到后端的完整链路。一、今日学习内容概览Element Plus 组件库:安装与按需引入、主题定制、常用组件实战(Form / Table / Dialog / Pagination / Menu)登录页面开发:表单验证规则、JWT Token 存储(Pinia + localStorage)、登录状态持久化文章列表页:ElTable 数据展示、分页排序、搜索过滤、批量操作、数据导出创作页面:富文本编辑器(wangEditor)集成、Markdown 预览、AI 文本生成调用路由守卫:基于角色的权限控制、未登录拦截、动态路由加载阶段里程碑:今天是第三阶段第 3 天 / 共 20 天。经过今天的学习,"智能写手"前端项目已完成三大核心页面的 UI 开发与前后端联调,项目骨架基本成型。二、Element Plus 组件库入门与主题定制2.1 安装与按需引入Element Plus 支持完整引入和按需引入两种方式。完整引入简单但打包体积大;按需引入通过unplugin-vue-components和unplugin-auto-import实现自动导入,既保证开发体验又控制包体积。Bash终端# 安装 Element Plus npm install element-plus # 安装自动导入插件(推荐) npm install -D unplugin-vue-components unplugin-auto-importJavaScriptvite.config.js — 自动导入配置import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' import AutoImport from 'unplugin-auto-import/vite' import Components from 'unplugin-vue-components/vite' import { ElementPlusResolver } from 'unplugin-vue-components/resolvers' export default defineConfig({ plugins: [ vue(), AutoImport({ resolvers: [ElementPlusResolver()], // 自动导入 Vue 和 Element Plus 的 API imports: ['vue', 'vue-router', 'pinia'], dts: 'src/auto-imports.d.ts' }), Components({ resolvers: [ElementPlusResolver()], dts: 'src/components.d.ts' }) ] })自动导入的好处:配置完成后,你可以在组件中直接使用ElButton、ElForm等组件,无需手动 import;同时ref、reactive、useRouter等 API 也会自动可用。编译时插件会自动帮你插入 import 语句,既省心又减少代码冗余。2.2 主题定制:打造品牌色系Element Plus 默认是蓝色主题,但我们的项目主色调是青绿色(#06d6a0)。通过 CSS 变量覆盖和 SCSS 配置,可以快速定制一套符合品牌调性的主题。SCSSstyles/element-theme.scss — 主题变量覆盖// 覆盖 Element Plus 的主色变量 @forward 'element-plus/theme-chalk/src/common/var.scss' with ( $colors: ( 'primary': ( 'base': #06d6a0, ), 'success': ( 'base': #22c55e, ), 'warning': ( 'base': #f59e0b, ), 'danger': ( 'base': #ef4444, ), ) ); // 引入组件样式(按需引入时需手动导入样式) @use 'element-plus/theme-chalk/src/index.scss' as *;JavaScriptmain.js — 引入自定义主题import { createApp } from 'vue' import App from './App.vue' // 引入自定义主题(覆盖默认蓝色) import './styles/element-theme.scss' // 引入 Element Plus 图标 import * as ElementPlusIconsVue from '@element-plus/icons-vue' const app = createApp(App) // 注册所有图标组件 for (const [key, component] of Object.entries(ElementPlusIconsVue)) { app.component(key, component) } app.mount('#app')2.3 暗黑模式适配我们的博客和学习路线都使用深色主题,Element Plus 也原生支持暗黑模式。只需在 html 标签上添加class="dark",并引入暗黑样式变量即可。JavaScriptcomposables/useDarkMode.js — 暗黑模式切换import { ref, watch } from 'vue' const isDark = ref(localStorage.getItem('theme') === 'dark') watch(isDark, (dark) = { const html = document.documentElement if (dark) { html.classList.add('dark') html.classList.remove('light') localStorage.setItem('theme', 'dark') } else { html.classList.add('light') html.classList.remove('dark') localStorage.setItem('theme', 'light') } }, { immediate: true }) export function useDarkMode() { return { isDark } }三、登录页面开发:表单验证与 JWT 鉴权3.1 登录表单 UI 与验证规则登录页是用户接触系统的第一个页面,既要美观又要安全。Element Plus 的ElForm组件内置了强大的表单验证能力,配合自定义校验规则可以实现复杂的验证逻辑。Vue SFCviews/LoginView.vue — 登录页面template div div div img / h2AI 智能写手/h2 p全栈 AI 内容创作平台/p /div el-form ref="formRef" :model="loginForm" :rules="loginRules" @keyup.enter="handleLogin" el-form-item prop="username" el-input v-model="loginForm.username" placeholder="用户名 / 邮箱" :prefix-icon="User" size="large" / /el-form-item el-form-item prop="password" el-input v-model="loginForm.password" type="password" placeholder="密码" :prefix-icon="Lock" show-password size="large" / /el-form-item el-form-item div el-checkbox v-model="rememberMe"记住我/el-checkbox a忘记密码?/a /div /el-form-item el-form-item el-button type="primary" size="large" :loading="loading" @click="handleLogin" { { loading ? '登录中...' : '立即登录' }} /el-button /el-form-item /el-form div p还没有账号?router-link to="/register"立即注册/router-link/p /div /div /div /template script setup import { ref, reactive } from 'vue' import { useRouter } from 'vue-router' import { useUserStore } from '@/stores/user' import { login } from '@/api/auth' import { ElMessage } from 'element-plus' import { User, Lock } from '@element-plus/icons-vue' const router = useRouter() const userStore = useUserStore() const formRef = ref(null) const loading = ref(false) const rememberMe = ref(false) const loginForm = reactive({ username: '', password: '' }) // 自定义验证规则 const validateUsername = (rule, value, callback) = { if (!value || value.trim() === '') { callback(new Error('请输入用户名或邮箱')) } else if (value.includes('@') !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value)) { callback(new Error('邮箱格式不正确')) } else { callback() } } const loginRules = { username: [ { required: true, validator: validateUsername, trigger: 'blur' } ], password: [ { required: true, message: '请输入密码', trigger: 'blur' }, { min: 6, max: 20, message: '密码长度需在 6-20 位之间', trigger: 'blur' }, { pattern: /^(?=.*[a-zA-Z])(?=.*\d).{6,20}$/, message: '密码必须同时包含字母和数字', trigger: 'blur' } ] } const handleLogin = async () = { const valid = await formRef.value.validate().catch(() = false) if (!valid) return loading.value = true try { const res = await login({ username: loginForm.username.trim(), password: loginForm.password }) // 存储登录状态 userStor

相关新闻

免费网盘直链下载助手完整教程:三步告别限速,实现满速下载

免费网盘直链下载助手完整教程:三步告别限速,实现满速下载

免费网盘直链下载助手完整教程:三步告别限速,实现满速下载 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国…

2026/7/29 10:35:31阅读更多 →
GitHub精准下载神器:3分钟学会只下载你需要的代码文件

GitHub精准下载神器:3分钟学会只下载你需要的代码文件

GitHub精准下载神器:3分钟学会只下载你需要的代码文件 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 还在为克隆整个GitHub仓库而烦恼吗?今天我要向你推荐一款GitHub文件精准下载工具…

2026/7/29 10:35:31阅读更多 →
拼多多新店0基础起量:基础销量+评价积累全攻略

拼多多新店0基础起量:基础销量+评价积累全攻略

## 前言做过拼多多的运营都清楚,新店最大的痛点不是没流量,而是有流量没转化。新店铺、新链接无销量、无评价、无权重,平台自然不会推送自然流量,即便少量访客进店,用户也会因为零销量、零评价不敢下单,最终…

2026/7/29 10:33:31阅读更多 →
Ollama本地AI助手部署与优化全指南

Ollama本地AI助手部署与优化全指南

1. 为什么选择Ollama打造私人AI助手在本地部署AI模型这件事上,Ollama的出现彻底改变了游戏规则。相比直接使用云服务API,本地部署最大的优势在于数据隐私和定制自由。我测试过市面上多个同类工具,Ollama的易用性对新手特别友好——不需要理解…

2026/7/29 11:39:46阅读更多 →
Hermes-agent | 第九篇:SQLite 会话库、全文检索与持久记忆

Hermes-agent | 第九篇:SQLite 会话库、全文检索与持久记忆

本文是 Hermes Agent 系列的第 9 篇。上一篇分析了长会话压缩、摘要更新与 Session Lineage,这一篇继续进入状态层:Hermes Agent 如何保存完整会话、检索历史证据,并把少量高价值事实沉淀为跨会话记忆。 本篇目标 完成本文后,你应该能够: 区分 Session History、Compress…

2026/7/29 11:39:46阅读更多 →
Hermes-agent | 第八篇:长会话如何压缩而不破坏上下文

Hermes-agent | 第八篇:长会话如何压缩而不破坏上下文

本文是 Hermes Agent 系列的第 8 篇。上一篇分析了 Tool Registry、Toolset、Tool Executor 与六类执行环境,这一篇继续处理工具型 Agent 必然遇到的另一个问题:随着用户消息、模型回答和 Tool Result 不断累积,Hermes Agent 如何在有限 Context Window 中压缩历史,同时保留…

2026/7/29 11:39:46阅读更多 →
AI时代必读书单:认知重构与人机协作指南

AI时代必读书单:认知重构与人机协作指南

1. 当AI开始奔跑:2026年必读书单的深层逻辑 第一次看到ChatGPT生成一篇完整论文只用了30秒时,我的手心开始冒汗。作为从业15年的技术人,我清楚记得2016年AlphaGo战胜李世石的那个下午——当时我们以为AI至少还要十年才能威胁到知识工作者的饭…

2026/7/29 11:39:46阅读更多 →
基于行空板与红外传感器的火车模型缩比测速系统设计与实现

基于行空板与红外传感器的火车模型缩比测速系统设计与实现

1. 项目概述:当火车模型遇上开源硬件 玩火车模型的朋友,尤其是那些热衷于场景沙盘制作的,肯定都琢磨过一个问题:我这台按1:87比例缩小的HO级模型,在沙盘轨道上跑起来,它的“真实速度”应该是多少&#xff1…

2026/7/29 11:39:46阅读更多 →
C语言实现高效员工信息管理系统开发指南

C语言实现高效员工信息管理系统开发指南

1. 项目概述"基于C语言的员工收录表"是一个典型的管理系统类项目,主要功能是通过C语言实现对企业员工基本信息的录入、存储、查询和修改等操作。这类系统在中小企业人事管理中有着广泛的应用场景,特别适合需要轻量级、高效率解决方案的场景。我…

2026/7/29 11:37:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/29 9:47:45阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/29 7:00:19阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/29 7:58:51阅读更多 →
28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“!

28. Agent 执行到一半想暂停?用 interrupt 给它设个“关卡“! 在构建复杂的 Agent 系统时,我们经常会遇到这样的场景:Agent 正在执行一个多步骤的任务,比如“下单购买商品”,但执行到一半时,我们…

2026/7/29 0:01:46阅读更多 →
自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

自律同行,突破无界!NANK南卡正式官宣曾舜晞成为品牌代言人

近日,国际专注开放式技术研发的声学品牌Nank南卡,正式官宣实力艺人曾舜晞担任品牌代言人。消息一经发出便轰动全网。为什么耳机品牌不选择流量明星、老牌歌手?而且是选择曾舜晞?让我们一起来探索一下!比起短期的流量&a…

2026/7/29 0:01:46阅读更多 →
【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

【RT-DETR多模态创新改进】CVPR 2025 | 独家特征融合创新改进篇 | 引入RLAB残差线性注意力模块,有效融合并强调多尺度特征,多种改进点,适合红外与可见光融合目标检测任务,有效涨点

一、本文介绍 🔥本文在RT-DETR多模态融合目标检测中引入RLAB残差线性注意力模块,可在不同模态特征交互阶段进行多次残差细化,使可见光、红外等特征在尺度、语义和空间位置上更好对齐;随后将细化特征与解码器输出拼接并生成Q、K、V,通过线性注意力自适应强化关键通道、目…

2026/7/29 0:01:46阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/28 20:22:24阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/29 4:31:51阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/28 2:35:58阅读更多 →