尚硅谷前端 (wsy答辩)

尚硅谷前端 (wsy答辩)

文章目录

  • 尚硅谷前端 (wsy答辩)
  • 一、前端开发过程和框架
    • 1.框架目录结构认识
      • 1.程序的入口 有两个 第一个是index,html , 第二个在SRC目录下的main,js
      • 2.前端页面环境使用框架(模板)
      • 3、框架build目录
      • 4. config目录
      • 4.src目录
      • 5.启动项目
  • 二、讲师列表
    • 1.讲师列表的前端体现
      • 第一步 :添加路由 src router index,js
      • 第二步,添加页面
      • 第三步。定义接口
      • 第四步 在讲师列表页面list,vue页面调用。得到接口返回的数据。
      • 第五步 页面显示
  • 三.讲师分页与查询
    • 分页
    • 条件查询
      • 选择中的清空功能
  • 列表删除(明天看完再写)


一、前端开发过程和框架

1.框架目录结构认识

在这里插入图片描述

1.程序的入口 有两个 第一个是index,html , 第二个在SRC目录下的main,js

在这里插入图片描述
main.js 都是引入其它的包

import Vue from 'vue'

import 'normalize.css/normalize.css' // A modern alternative to CSS resets

import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import locale from 'element-ui/lib/locale/lang/zh-CN' // lang i18n

import '@/styles/index.scss' // global css

import App from './App'
import router from './router'
import store from './store'

import '@/icons' // icon
import '@/permission' // permission control
import { hasBtnPermission } from './utils/permission' // button permission

然后创建了个vue对象(vue是一个用于构建用户界面的开源JavaScript框架。)

new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App)
})

2.前端页面环境使用框架(模板)

模板一vue-admin-template。 模板二 vue +element-ui

3、框架build目录

放项目构建的脚步文件 ,基本不用改

4. config目录

index,js
一些配置 ,比如

/ Various Dev Server settings
    host: 'localhost', // can be overwritten by process.env.HOST
    port: 9528, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
    autoOpenBrowser: true,
    errorOverlay: true,
    notifyOnErrors: false,
    poll: false, // https://webpack.js.org/configuration/dev-server/#devserver-watchoptions-

host: ‘localhost’, ip地址 port 端口号等等
注意useEslint: 这项改成false,
scodeHNEslunt门自动整理代码格式,但是它太严格了,影响我们编码,所以把它给干了

dev.env.js。 BASE_API:是修改后端接口的地址

  // BASE_API: '"https://easy-mock.com/mock/5950a2419adc231f356a6636/vue-admin"',
  BASE_API: '"http://localhost:8222"',

4.src目录

在这里插入图片描述
api 定义方法
assets 静态资源,比如jss文件 ,css文件等
components 放一些插件和组件
icons 项目中相关的图标
router 路由
store 没啥用 放些脚本
styles 放一些样式
views 项目中具体的页面

5.启动项目

1.下载依赖

npm install

2 启动项目

npm run dev

二、讲师列表

1.讲师列表的前端体现

第一步 :添加路由 src router index,js

{
  path: '/teacher',
  component: Layout,
  // 访问/teacher时自动跳转到/teacher/table 。就是默认的跳转
  redirect: '/teacher/table',
  // 路由名称,简单理解就是那个按钮的名称
  name: '讲师管理',
  // 路由的标题 图标
  meta: { title: '讲师管理', icon: 'example' },
  // 子路由配置
  children: [
    {
      // 子路由也就是下级菜单的路径
      path: 'table',
      // 子路由名称
      name: '讲师列表',
      // 子路由组件
      component: () => import('@/views/edu/teacher/list'),                 ()@/默认的不能改,路径可以自己定义)
      // 子路由元信息
      meta: { title: '讲师列表', icon: 'table' }
    },
    {
    path: 'from',(就是添加的路径放在哪里)
    name: '添加讲师',
  
      component: () => import('@/views/edu/teacher/form'),
      
      meta: { title: '添加讲师', icon: 'tree' }
    },
    {

      path: 'edit/:id',
  
      name: 'EduTeacherEdit',
   component: () => import('@/views/edu/teacher/form'),
      meta: { title: '编辑讲师', noCache: true },
      hidden: true
    }
  ]
},

然后在对应路径下添加页面 比如 component: () => import(‘@/views/edu/teacher/list’ 你就要 在对应目录里写list.vue

如果路径写错会报错,看看路径写错没比如/views/teacher/form 因为路径错了,view下没有teacher这个文件夹,所以会报错,检查路径改为/views/edu/teacher/form即可

第二步,添加页面

比如在teacher 中添加list

<template>
<div class="app-container">
</div>
</template>

这些是必须的,其它内容在中间填写。如

<template>
<div class="app-container">
讲师添加
</div>
</template>

第三步。定义接口

第三步在api文件夹创建teacher.js定义访问的接口地址

import request from '@/utils/request'
import axios from 'axios'
import {Message, MessageBox} from 'element-ui'
import store from '../store'
import {getToken} from '@/utils/auth'

// 创建axios实例
const service = axios.create({
  baseURL: process.env.BASE_API, // api 的 base_url
  timeout: 20000 // 请求超时时间
})

// request拦截器
service.interceptors.request.use(
  config => {
    if (store.getters.token) {
      config.headers['token'] = getToken() // 让每个请求携带自定义token 请根据实际情况自行修改
    }
    return config
  },
  error => {
    // Do something with request error
    console.log(error) // for debug
    Promise.reject(error)
  }
)

// response 拦截器
service.interceptors.response.use(
  response => {
    /**
     * code为非20000是抛错 可结合自己业务进行修改

说白了就是这个事定义的一些规则,比如多久超时 还有哪些token直接拦截到等等,按具体的情况自己定义

继续说teacher.request

export default {
  // 1. 讲师列表
  getTeacherListPage(page,limit,queryTeacher){
    return request({
      // 用模板字符串进行动态拼接页码和每页显示的记录数
      url: `/edu/edu-teacher/findPage/${page}/${limit}`,
      method: 'post', //请求方法为POST
      // data表示把对象转换成json进行传递到接口里面

      data: queryTeacher
    })
  },

page, limit, queryTeacher 分别是三个参数 page 当前页,limit 每页记录数。queryTeacher 是条件的对象 ,这个结构是固定的,建议直接复制,不要手敲。

第四步 在讲师列表页面list,vue页面调用。得到接口返回的数据。

<template>
<div class="app-container">
讲师列表
</div>
</template>
<script>
export default{
}
//写核心代码位置
</script>

因为模板已经封装好了,所以只要写参数就行,参数大概就如下

</template>
<script>
import teacher from '@/api/edu/teacher/teacher'
export default {
    // data:{
    //
    // },
    data() {
      return {
        list: null, // 存储教师列表
      page: 1, // 当前页码
      limit: 5, // 每页显示的记录数
      total: 0, // 总记录数
      queryTeacher: {} // 查询条件
      }
    },
    created() {
      this.getList()#讲师列表的方法
    },
 methods: {
    getList(page = 1) {
      // 更新当前页码
      this.page = page
      // 调用API获取教师分页列表
      teacher.getTeacherListPage(this.page, this.limit, this.queryTeacher)
        .then(response => {
          // 更新列表和总记录数
          this.list = response.data.rows
          this.total = response.data.total
        })
        .catch(error => {
          // 处理错误
          console.log(error)
        })
    },
    resetData() {
      // 清空查询条件并重新加载列表
      this.queryTeacher = {}
      this.getList()
    },
      deleteTeacherById(id) {
        // alert(id) 测试代码
        this.$confirm('此操作将永久删除该记录, 是否继续?', '提示', {
          confirmButtonText: '确定',
          cancelButtonText: '取消',
          type: 'warning'
        }).then(() => {
          return teacher.removeById(id)
        }).then(() => {
          this.getList()
          this.$message({
            type: 'success',
            message: '删除成功!'
          })
        }).catch((response) => { // 失败
          if (response === 'cancel') {
            this.$message({
              type: 'info',
              message: '已取消删除'
            })
          } else {
            this.$message({
              type: 'error',
              message: '删除失败'
            })
          }
        })

      }
    }
  }

第五步 页面显示

使用组件element-ui实现,不用自己写直接用官网的文档修改即可
https://element.eleme.cn
组件—》table表格
在这里插入图片描述
选个样式,点开,有个显示代码

<template>
  <el-table
    :data="tableData"
    stripe
    style="width: 100%">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        tableData: [{
          date: '2016-05-02',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1518 弄'
        }, {
          date: '2016-05-04',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1517 弄'
        }, {
          date: '2016-05-01',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1519 弄'
        }, {
          date: '2016-05-03',
          name: '王小虎',
          address: '上海市普陀区金沙江路 1516 弄'
        }]
      }
    }
  }
</script>
每行代码意义如下
<template>
  <!-- 定义一个表格组件 -->
  <el-table
    :data="tableData"  <!-- 绑定表格数据源 -->
    stripe  <!-- 开启斑马纹效果 -->
    style="width: 100%">  <!-- 设置表格宽度为100% -->
    <!-- 定义日期列 -->
    <el-table-column
      prop="date"  <!-- 指定该列的数据字段名 -->
      label="日期"  <!-- 列标题 -->
      width="180">  <!-- 列宽 -->
    </el-table-column>
    <!-- 定义姓名列 -->
    <el-table-column
      prop="name"  <!-- 指定该列的数据字段名 -->
      label="姓名"  <!-- 列标题 -->
      width="180">  <!-- 列宽 -->
    </el-table-column>
    <!-- 定义地址列 -->
    <el-table-column
      prop="address"  <!-- 指定该列的数据字段名 -->
      label="地址">  <!-- 列标题 -->
    </el-table-column>
  </el-table>
</template>

<script>
  export default {
    data() {
      return {
        // 表格数据
        tableData: [
          {  // 第一行数据
            date: '2016-05-02',  // 日期
            name: '王小虎',  // 姓名
            address: '上海市普陀区金沙江路 1518 弄'  // 地址
          },
          {  // 第二行数据
            date: '2016-05-04',  // 日期
            name: '王小虎',  // 姓名
            address: '上海市普陀区金沙江路 1517 弄'  // 地址
          },
          {  // 第三行数据
            date: '2016-05-01',  // 日期
            name: '王小虎',  // 姓名
            address: '上海市普陀区金沙江路 1519 弄'  // 地址
          },
          {  // 第四行数据
            date: '2016-05-03',  // 日期
            name: '王小虎',  // 姓名
            address: '上海市普陀区金沙江路 1516 弄'  // 地址
          }
        ]
      }
    }
  }
</script>

三.讲师分页与查询

分页

在上面个什么UI里 找到pagination分页选项进去,选一个
在这里插入图片描述

<el-pagination
  :page-size="20"  //每页显示的条目数 
  :pager-count="11"  //显示的页码数
  layout="prev, pager, next"  //分页器的布局
  :total="1000">  //总条目
</el-pagination>

直接改就可以了,这段代码加到分页那里,然后进行修改

修改之后加入这段代码,把gitlist方法给传过来

@current-change="getList"

条件查询

就是加这么个东西,还是使用element ui来改,选from表单那
在这里插入图片描述
根据这个修改
在这里插入图片描述
每一个el-form-item 都是表单的项。审批人是个普通的input,活动区域是个下拉列表那种筛选,你要几个表单就写几个el-form-item就可以了。v-model绑定到formInline,也就是说一个地方变其它地方都变,这是啥意思呢,就类似选重庆就会下拉九龙坡,沙坪坝,长寿等,选湖南就会下拉长沙等的意思、

inline="true"使表单项水平排列,:model绑定表单数据对象 -->
<el-form :inline="true" :model="formInline" class="demo-form-inline">   //inline="true"使表单项水平排列
  <!-- 表单项,label属性设置标签文本,el-input组件绑定到formInline对象的user属性 -->
  <el-form-item label="审批人">
    <el-input v-model="formInline.user" placeholder="审批人"></el-input>
  </el-form-item>
  <!-- 表单项,label属性设置标签文本,el-select组件用于选择,v-model绑定到formInline对象的region属性 -->
  <el-form-item label="活动区域">
    <el-select v-model="formInline.region" placeholder="活动区域">
      <!-- el-option是el-select的下拉选项,label是显示的文本,value是绑定到v-model的值 -->
      <el-option label="区域一" value="shanghai"></el-option>
      <el-option label="区域二" value="beijing"></el-option>
    </el-select>
  </el-form-item>
  <!-- 表单项,不包含标签,只包含一个el-button组件,type="primary"设置按钮为主要样式,@click绑定提交表单的方法 -->
  <el-form-item>
    <el-button type="primary" @click="onSubmit">查询</el-button>
  </el-form-item>
</el-form>
<script>
  // Vue组件的默认导出对象
  export default {
    // 组件的数据对象
    data() {
      return {
        // 表单数据对象,包含用户输入的数据
        formInline: {
          // 审批人输入框的绑定值
          user: '',
          // 活动区域选择框的绑定值
          region: ''
        }
      }
    },
    // 组件的方法对象
    methods: {
      // 提交表单的方法,当点击查询按钮时触发
      onSubmit() {
        // 在控制台输出'submit!',实际应用中可以在这里处理表单提交逻辑
        console.log('submit!');
      }
    }
  }
</script>

选择中的清空功能

清空条件值,清空所有查询

resetData(){//引用清空的方法
//表单输入项数据清空,
this.teacherQuery={}
//查询所有讲师数据
this.getList()

因为是双向绑定,一个被清了,绑定的另外一个也被干了。

列表删除(明天看完再写)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/924818.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

不间断电源 (UPS) 对现代技术可靠性的影响

在这个技术型世界里&#xff0c;无论是在个人还是商业环境中&#xff0c;电力供应商提供的稳定供电都变得越来越重要。 不间断电源 (UPS) 系统是一种不可或缺的解决方案&#xff0c;可保证终端设备不受干扰地运行&#xff0c;在出现电源问题或故障时让用户继续工作。 这篇文章…

【05】Selenium+Python 两种文件上传方式(AutoIt)

上传文件的两种方式 一、input标签上传文件 可以用send_keys方法直接上传文件 示例代码 input标签上传文件import time from selenium import webdriver from chromedriver_py import binary_path # this will get you the path variable from selenium.webdriver.common.by i…

leetcode 二叉树的最大深度

104. 二叉树的最大深度 已解答 简单 相关标签 相关企业 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3…

MATLAB - ROS2 ros2genmsg 生成自定义消息(msg/srv...)

系列文章目录 前言 语法 ros2genmsg(folderpath)ros2genmsg(folderpath,NameValue) 一、说明 ros2genmsg(folderpath) 通过读取指定文件夹路径下的 ROS 2 自定义信息和服务定义来生成 ROS 2 自定义信息。函数文件夹必须包含一个或多个 ROS 2 软件包。这些软件包包含 .msg 文件…

使用 Elastic 和 Apple 的 OpenELM 模型构建 RAG 系统

作者&#xff1a;来自 Elastic Gustavo Llermaly 如何部署和测试新的 Apple 模型并使用 Elastic 构建 RAG 系统。 在本文中&#xff0c;我们将学习部署和测试新的 Apple 模型&#xff0c;并构建一个 RAG 系统来模拟 Apple Intelligence&#xff0c;使用 Elastic 作为向量数据库…

springboot336社区物资交易互助平台pf(论文+源码)_kaic

毕 业 设 计&#xff08;论 文&#xff09; 社区物资交易互助平台设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff…

python爬虫案例——猫眼电影数据抓取之字体解密,多套字体文件解密方法(20)

文章目录 1、任务目标2、网站分析3、代码编写1、任务目标 目标网站:猫眼电影(https://www.maoyan.com/films?showType=2) 要求:抓取该网站下,所有即将上映电影的预约人数,保证能够获取到实时更新的内容;如下: 2、网站分析 进入目标网站,打开开发者模式,经过分析,我…

Flutter 指纹识别

在这篇博客中&#xff0c;我们将介绍如何使用 Flutter 的 local_auth 插件在 Android 和 iOS 设备上实现指纹识别功能。通过这一步一步的实现&#xff0c;我们将学习如何检查设备是否支持生物识别、如何触发指纹验证&#xff0c;并处理可能出现的错误。 效果图&#xff08;因为…

不建模,无代码,如何快速搭建VR虚拟展厅?

不建模、无代码搭建虚拟展厅&#xff0c;可以借助一些专业的虚拟展厅搭建平台或工具来实现。以下是一些具体的步骤和建议&#xff1a; 一、选择平台或工具 首先&#xff0c;需要选择一个适合的平台或工具来搭建虚拟展厅。这些平台通常提供预设的展厅模板、拖拽式编辑工具和丰富…

网络空间安全之一个WH的超前沿全栈技术深入学习之路(13-3)白帽必经之路——如何用Metasploit 渗透到她的心才不会让我释怀

欢迎各位彦祖与热巴畅游本人专栏与博客 你的三连是我最大的动力 以下图片仅代表专栏特色 [点击箭头指向的专栏名即可闪现] 专栏跑道一 ➡️网络空间安全——全栈前沿技术持续深入学习 专栏跑道二 ➡️ 24 Network Security -LJS ​ ​ ​ 专栏跑道三 ➡️ MYSQL REDIS Advan…

深入理解计算机系统,源码到可执行文件翻译过程:预处理、编译,汇编和链接

1.前言 从一个高级语言到可执行程序&#xff0c;要经过预处理、编译&#xff0c;汇编和链接四个过程。大家可以思考下&#xff0c;为什么要有这样的过程&#xff1f; 我们学习计算机之处&#xff0c;就应该了解到&#xff0c;计算机能够识别的只有二进制语言&#xff08;这是…

linux系统清理全部python环境并重装

提问 centos系统清理全部python环境并重装&#xff0c;并且使用宝塔。 解答 要在CentOS系统中彻底清理Python3环境&#xff0c;可以遵循以下步骤&#xff1a; 卸载Python3 使用rpm命令卸载所有与Python3相关的包。这个命令会查询所有已安装的与python3相关的rpm包&#xf…

蓝桥杯——递归

1、用递归实现阶乘 5*4*3*2*1120 package day3;public class Demo6 {public static void main(String[] args) {int result f(5);System.out.println(result);}private static int f(int i) {if(i1) {return 1;}return i * f(i-1);}}结果&#xff1a;120 2、爬楼梯 有一个楼…

DAMODEL丹摩|部署FLUX.1+ComfyUI实战教程

本文仅做测评体验&#xff0c;非广告。 文章目录 1. FLUX.1简介2. 实战2. 1 创建资源2. 1 ComfyUI的部署操作2. 3 部署FLUX.1 3. 测试5. 释放资源4. 结语 1. FLUX.1简介 FLUX.1是由黑森林实验室&#xff08;Black Forest Labs&#xff09;开发的开源AI图像生成模型。它拥有12…

黑马程序员Java项目实战《苍穹外卖》Day02

苍穹外卖-day02 课程内容 新增员工员工分页查询启用禁用员工账号编辑员工导入分类模块功能代码 **功能实现&#xff1a;**员工管理、菜品分类管理。 员工管理效果&#xff1a; 菜品分类管理效果&#xff1a; 1. 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需求…

《解锁计算机专业宝藏:核心编程语言与学习资料全解析》

在当今数字化浪潮汹涌澎湃、技术迭代日新月异的时代&#xff0c;计算机专业宛如一座蕴藏无尽宝藏与无限机遇的神秘殿堂&#x1f3f0;。对于莘莘学子而言&#xff0c;精准掌握核心编程语言&#xff0c;并手握优质学习资料&#xff0c;恰似寻得开启这扇殿堂大门的秘钥&#xff0c…

【Ubuntu 24.04】How to Install and Use NVM

参考 下载 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash激活 Activate NVM: Once the installation script completes, you need to either close and reopen the terminal or run the following command to use nvm immediately. exp…

【优选算法】位运算

目录 常见位运算总结1、基础位运算2、给一个数n&#xff0c;确定它的二进制位的第x位上是0还是13、将一个数n的二进制位的第x位改成14、将一个数n的二进制位的第x位改成05、位图的思想6、提取一个数n的二进制位中最右侧的17、将一个数n的二进制位中最右侧的1变为08、位运算的优…

systemverilog约束中:=和:/的区别

“x dist { [100:102] : 1, 200 : 2, 300 : 5}” 意味着其值等于100或101或102或200或300其中之一&#xff0c; 其权重比例为1:1:1:2:5 “x dist { [100:102] :/ 1, 200 : 2, 300 : 5}” 意味着等于100&#xff0c;101&#xff0c;102或200&#xff0c;或300其…

06_数据类型

数据类型 数据类型分类 JavaScript 语言的每一个值,都属于某一种数据类型。JavaScript 的数据类型,共有六种。(ES6 又新增了第七种 Symbol 类型的值和第八种 BigInt类型,当前课程暂不涉及) 据类型分类 原始类型(基础类型) var age = 20, var name = 尚学堂"; var le…