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/10/21 9:04:37 阅读更多 →
GitHub精准下载神器:3分钟学会只下载你需要的代码文件

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

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

2026/10/25 0:40:50 阅读更多 →
5分钟掌握EPubBuilder:浏览器内打造专业级EPUB电子书的终极方案

5分钟掌握EPubBuilder:浏览器内打造专业级EPUB电子书的终极方案

5分钟掌握EPubBuilder:浏览器内打造专业级EPUB电子书的终极方案 【免费下载链接】EPubBuilder 一款在线的epub格式书籍编辑器 项目地址: https://gitcode.com/gh_mirrors/ep/EPubBuilder 你是否曾经面对复杂的电子书制作软件感到无从下手?或者想要…

2026/11/1 7:29:44 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/3 1:09:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/3 10:57:27 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/3 11:35:49 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/3 2:27:21 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/3 10:47:27 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/3 10:57:33 阅读更多 →

日新闻

周新闻

月新闻