vue开发项目感悟(如:管理系统) 1.项目结构规划 2.自定义元素和ElementUI配合使用 3.如何实现页面的切换呢?(静态和动态路由???)

一、使用vue-cli新建vue项目

1.main.js // 是项目入口文件,里面注册ElementUI插件,并指定App.vue为入口vue文件

2.App.vue // 指定布局,Header和Aside

总体结构 //这个结构决定了你打开主页后,看到的各个路由什么及其菜单

复制代码
<template>
  <div id="nav">
    <!--外层容器-->
    <el-container>

      <!--顶栏容器-->
      <el-header>
        <Header/>
      </el-header>

      <!--侧边栏容器-->
      <el-container>
        <el-aside width="200px">
          <Aside/>
        </el-aside>

        <!--这个是存放路由的地了!!! 通过切换路由实现页面切换-->
        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>

  </div>
</template>

注意2部分: 用到的各种容器 + 自定义路由!!!

Header // 登录登出按钮 网站图标啥的

Dropdown 下拉菜单 | Element Plus

Aside // 这个主要就是路由了!!!

Menu 菜单 | Element Plus

3.router/index.js // 指定各个路由的配置,哪个路由对应哪个views/XxxView.vue界面

4.一个具体的页面代码组织 HomeView.vue, 它是在路由中注册的

<template>部分

复制代码
<template>
  <div class="home" style="padding: 50px">

    这一部分是除了从ElementUI粘贴通用的一些组件外,自己肯定还有一些自定义的部分,搞个div即可!!!
    里面可以加一下按钮啥的加一些自定义的功能。
    <div style="text-align: left; padding-right: 10px; margin-bottom: 10px">
      <el-input
          v-model="search"
          placeholder="请输入搜索关键字"
          style="width: 20%; margin-right: 10px"
          clearable
      ></el-input>

      <el-button type="primary" @click="load">搜索</el-button>
      <el-button type="success" @click="add">添加</el-button>
    </div>


    这一部分就是从ElementUI粘贴出来的了
    <el-table
        :data="tableData"
        stripe
        border
        style="width: 100%; margin-bottom: 10px;"
    >
      <el-table-column prop="id" label="编号" width="180" sortable/>
      <el-table-column prop="studentname" label="学生姓名" width="180"/>
      <el-table-column prop="gender" label="性别"/>
      <el-table-column prop="age" label="年龄"/>
      <el-table-column prop="address" label="家庭地址"/>
      <el-table-column fixed="right" label="操作" width="150">
        <template #default="scope">
          <el-button type="primary" size="small" @click="handleEdit(scope.row)"
          >编辑
          </el-button
          >
          <el-popconfirm
              title="你确定要删除吗?"
              @confirm="handleDelete(scope.row.id)"
          >
            <template #reference>
              <el-button type="danger" size="small">删除</el-button>
            </template>
          </el-popconfirm>
        </template>
      </el-table-column>
    </el-table>

    <!--分页-->
    <el-pagination
        v-model:currentPage="currentPage"
        v-model:page-size="pageSize"
        :page-sizes="[5, 10, 20]"
        :small="small"
        :disabled="disabled"
        :background="background"
        layout="total, sizes, prev, pager, next, jumper"
        :total="total"
        @size-change="handleSizeChange"
        @current-change="handleCurrentChange"
    />

    <!--操作时,弹框-->
    <el-dialog v-model="dialogVisible" title="学生信息" width="30%">
      <el-form :model="form" label-width="120px">
        <el-form-item label="学生姓名">
          <el-input v-model="form.studentname"/>
        </el-form-item>
        <el-form-item label="性别">
          <el-radio v-model="form.gender" label="男" size="large">男</el-radio>
          <el-radio v-model="form.gender" label="女" size="large">女</el-radio>
        </el-form-item>
        <el-form-item label="年龄">
          <el-input v-model="form.age"/>
        </el-form-item>
        <el-form-item label="家庭住址">
          <el-input type="textarea" v-model="form.address"/>
        </el-form-item>
      </el-form>
      <template #footer>
        <span class="dialog-footer">
          <el-button @click="dialogVisible = false">取消</el-button>
          <el-button type="primary" @click="save">确定</el-button>
        </span>
      </template>
    </el-dialog>
  </div>
</template>

也就是用到的一些组件:

复制代码
Table 表格 | Element Plus

Pagination 分页 | Element Plus

Dialog 对话框 | Element Plus

MessageBox 消息弹框 | Element Plus

<script>部分

复制代码
export default {
  name: "HomeView",
  components: {},  // 这个应该是引用其它的组件,毕竟vue是基于组件可以共用

    setup(){ // 最外层

      // 相当于vue2中的data     

    const state = reactive({
          tableData: [],
          currentPage: 1,
          pageSize: 5,
          total: 0,
          search: "",
          form: {},
          dialogVisible: false,
    })
         // 页面加载后调用, 生命周期类的

        onMounted(()=>{

               // 可以页面初始化好后调用一个方法发送http请求从服务器获取数据

                xxx1();

        })



        const xxx1 = ()=>{  ... } // 一个个功能方法       

        const xxx2 = ()=>{  ... } // 一个个功能方法



        return {

                ...toRefs(state),

                // 在页面中可以引用到的一些方法

                xxx1, 

                xxx2,

                xxx3,

        }

}       

5.其它复用部分

components // 主要是各个页面复用的一些,毕竟vue玩的就是组件的复用!!!

axios 发出请求。

跨域: 为了代码可读性,我们当然还是使用后端跨域配置了,前端还得修改路由加上api,有点麻烦。

如何实现页面的切换呢?(静态和动态路由???)

登录验证???

权限管理???

相关推荐
大鱼前端7 小时前
Vue 3.5 :新特性全解析与开发实践指南
vue.js
_龙衣8 小时前
将 swagger 接口导入 apifox 查看及调试
前端·javascript·css·vue.js·css3
夏之小星星10 小时前
el-tree结合checkbox实现数据回显
前端·javascript·vue.js
琉璃℡初雪11 小时前
vue2/3 中使用 @vue-office/docx 在网页中预览(docx、excel、pdf)文件
vue.js·pdf·excel
拖孩13 小时前
【Nova UI】十五、打造组件库之滚动条组件(上):滚动条组件的起步与进阶
前端·javascript·css·vue.js·ui组件库
苹果电脑的鑫鑫13 小时前
element中表格文字剧中可以使用的属性
javascript·vue.js·elementui
Hejjon13 小时前
Vue2 elementUI 二次封装命令式表单弹框组件
前端·vue.js
Wannaer14 小时前
从 Vue3 回望 Vue2:响应式的内核革命
前端·javascript·vue.js
赵大仁14 小时前
React vs Vue:点击外部事件处理的对比与实现
javascript·vue.js·react.js
coderYYY17 小时前
多个el-form-item两列布局排齐且el-select/el-input组件宽度撑满
前端·javascript·vue.js·elementui·前端框架