VUE3套用组件库快速开发(以Element Plus为例)二

接上文,接下来配置第五步

  1. 改写app.vue
js 复制代码
<template>
  <div class="common-layout">
    <el-container>
      <el-header
        style="background-color: #409EFF; color: white; display: flex; align-items: center; justify-content: space-between;">
        <div style="font-weight: bold; font-size: 40px;">学习社区 2026</div>

        <el-menu mode="horizontal" background-color="#409EFF" text-color="#fff" active-text-color="#ffd04b" router
          :default-active="$route.path">
          <el-menu-item index="/">首页列表</el-menu-item>
          <el-menu-item index="/post">我要发帖</el-menu-item>
          <el-menu-item index="/about">关于</el-menu-item>
        </el-menu>
      </el-header>

      <el-main>
        <RouterView />
      </el-main>
    </el-container>
  </div>
</template>

<style>
/* 消除浏览器自带的 8px 外边距,让导航栏铺满 */
body {
  margin: 0;
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
}
</style>
  1. 在src/view/PostView.vue
js 复制代码
<template>
  <div style="max-width: 800px; margin: 0 auto;">
    <el-card>
      <template #header>
        <div class="card-header">
          <span>发布新讨论帖</span>
        </div>
      </template>

      <el-form :model="postForm" label-position="top">
        <el-form-item label="帖子标题">
          <el-input v-model="postForm.title" placeholder="请输入吸引人的标题" />
        </el-form-item>

        <el-form-item label="所属板块">
          <el-radio-group v-model="postForm.tag">
            <el-radio-button label="前端" />
            <el-radio-button label="后端" />
            <el-radio-button label="求职" />
            <el-radio-button label="灌水" />
          </el-radio-group>
        </el-form-item>

        <el-form-item label="帖子正文">
          <el-input
            v-model="postForm.content"
            type="textarea"
            :rows="6"
            placeholder="请分享你的学习心得..."
          />
        </el-form-item>

        <el-form-item>
          <el-button type="primary" @click="handlePublish">立即发布</el-button>
          <el-button>存为草稿</el-button>
        </el-form-item>
      </el-form>
    </el-card>
  </div>
</template>

<script setup>
import { reactive } from 'vue'
import { ElMessage } from 'element-plus'

// 使用 reactive 定义一组响应式数据
const postForm = reactive({
  title: '',
  tag: '前端',
  content: ''
})

const handlePublish = () => {
  // 简单的校验逻辑
  if (!postForm.title || !postForm.content) {
    ElMessage.warning('请填写完整内容再发布哦!')
    return
  }
  
  console.log('正在向后端发送数据...', postForm)
  ElMessage.success('发布成功!(数据已打印在控制台)')
}
</script>
  1. 更新router
js 复制代码
{
      path: '/post',
      name: 'post',
      // 这就是所谓的"懒加载",只有点击时才加载 PostView 页面
      component: () => import('../views/PostView.vue')
    }

此时访问/post页面已经有了内容

相关推荐
weixin_460443563 小时前
2026年新修订《网络安全法》实施:Java私有化考试系统如何做好SBOM、漏洞治理与安全升级?
java·开发语言·在线考试系统·企业培训考试系统·宏远培训考试系统·国企培训考试系统·国产化培训系统
子兮曰3 小时前
把 649 种文件格式塞进一个网页里:一个「文件不出浏览器」的预览器
前端·javascript·后端
Cc.Y6 小时前
Java零基础入门:可变字符串与包装类:StringBuilder、StringBuffer 与 通讯录管理系统实战
java·开发语言·python
paopaokaka_luck6 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
sm_926787056 小时前
RFID 标签打印的技术实现要点与二次开发实践
java·大数据·前端·c++·编辑器
阿森_dev6 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
by209996 小时前
C++ 多态:同一个基类接口,调用不同的函数
开发语言·c++·经验分享·多态
笔墨登场说说6 小时前
flink bin/start-cluster.sh 帮我做成开机启动
开发语言·python
Sarvartha6 小时前
Lambda 表达式和函数式接口
java·开发语言
IMPYLH6 小时前
HTML 的 <video> 元素
前端·html