JavaWeb:前端工程化-ElementPlus

介绍

快速入门

npm install element-plus --save

main.js

java 复制代码
```javascript
import { createApp } from 'vue'
import App from './App.vue'

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')

常见组件

表格

分页条

对话框


表单

案例:用户信息管理

1.进入D:\front\vue\ 执行cmd,初始化工程

npm init vue@latest

2.Vscode 打开

3.安装axios,element

npm install axios

npm install element-plus --save

4.创建views/EmpList.vue

javascript 复制代码
<script setup>
</script>

<template>
    
</template>

<style scoped>
</style>

4.拷贝行内表单template、script,App.vue导入

main.ts注释样式

javascript 复制代码
import App from './App.vue'

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'

const app = createApp(App)
app.use(ElementPlus)
app.mount('#app')
javascript 复制代码
<script setup lang="ts">
import EmpList from './views/EmpList.vue'
</script>

<template>
 <emp-list />
</template>

<style scoped>

</style>
javascript 复制代码
<script setup lang="ts">
</script>

<template>
 <h1>EmpList...</h1>
</template>

<style scoped>

</style>

5.npm run dev

搜索框

javascript 复制代码
<script setup lang="ts">
import { reactive } from 'vue'

const formInline = reactive({
  id: '',
  name: '',
  image: '',
  gender: '',
  job: '',
  entrydate: '',
  updatetime: ''
})

const search = () => {
  console.log('search!')
}
const clean = () => {
  console.log('clean!')
}
</script>

<template>
    <el-form :inline="true" :model="formInline" class="demo-form-inline">
      <el-form-item label="姓名">
        <el-input v-model="formInline.name" placeholder="请输入姓名" clearable />
      </el-form-item>
      <el-form-item label="性别">
        <el-select
          v-model="formInline.gender"
          placeholder="请选择"
          clearable
        >
          <el-option label="男" value="1" />
          <el-option label="女" value="2" />
        </el-select>
      </el-form-item>
      <el-form-item label="职位">
        <el-select
          v-model="formInline.job"
          placeholder="请选择"
          clearable
        >
          <el-option label="班主任" value="1" />
          <el-option label="讲师" value="2" />
          <el-option label="其它" value="3" />
        </el-select>
      </el-form-item>
      <el-form-item label="入职日期">
        <el-date-picker
          v-model="formInline.entrydate"
          type="date"
          placeholder="请选择日期"
          clearable
        />
      </el-form-item>
      <el-form-item>
        <el-button type="primary" @click="search">查询</el-button>
        <el-button type="primary" @click="clean">清空</el-button>
      </el-form-item>
    </el-form>
</template>

<style scoped>
.demo-form-inline .el-input {
  --el-input-width: 220px;
}

.demo-form-inline .el-select {
  --el-select-width: 220px;
}
</style>

表格

Access to XMLHttpRequest at 'https://web-server.itheima.net/emps/list?name=KaTeX parse error: Expected 'EOF', got '&' at position 18: ...ormInline.name}&̲gender={formInline.gender}&job=${formInline.job}' from origin 'http://localhost:5173' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

跨域问题

vite.config.ts

javascript 复制代码
server  : {
    proxy  : {
      '/api' : {
        target      : 'https://web-server.itheima.net',
        changeOrigin: true,
        rewrite     : (path) => path.replace(/^\/api/, ''),
      },
    },
  }

api就是https://web-server.itheima.net

javascript 复制代码
    <!-- 表格 -->
    <el-table :data="tableData" style="width: 100%">
      <el-table-column prop="id" label="ID" width="180" />
      <el-table-column prop="name" label="姓名" width="180" />
      <el-table-column prop="image" label="头像" width="180" />
      <el-table-column prop="gender" label="性别" width="180" />
      <el-table-column prop="job" label="职业" width="180" />
      <el-table-column prop="entrydate" label="入职日期" width="180" />
      <el-table-column prop="updatetime" label="更新时间" />
    </el-table>
javascript 复制代码
/* 表格数据 */
// const tableData = [
//   {
//     id: 1,
//     name: '谢逊',
//     image: '',
//     gender: '1',
//     job: '1',
//     entrydate: '2025-05-29',
//     updatetime: '2025-05-29 12:00:00'
//   }
// ]
const tableData = ref([])
const search = () => {
  console.log('search!')
  axios.get('https://web-server.itheima.net/emps/list?name=' + formInline.name).then(res => {
    console.log(res.data.data)
    tableData.value = res.data.data
  }) 
}
// 钩子函数,通过axios获取数据
onMounted(() => {
  search();
})

import { reactive, onMounted, ref } from 'vue'

插槽

相关推荐
站在风口的猪110826 分钟前
《前端面试题:CSS预处理器(Sass、Less等)》
前端·css·html·less·css3·sass·html5
程序员的世界你不懂1 小时前
(9)-Fiddler抓包-Fiddler如何设置捕获Https会话
前端·https·fiddler
MoFe11 小时前
【.net core】天地图坐标转换为高德地图坐标(WGS84 坐标转 GCJ02 坐标)
java·前端·.netcore
去旅行、在路上1 小时前
chrome使用手机调试触屏web
前端·chrome
Aphasia3112 小时前
模式验证库——zod
前端·react.js
lexiangqicheng3 小时前
es6+和css3新增的特性有哪些
前端·es6·css3
avoidaily3 小时前
使用Node.js分片上传大文件到阿里云OSS
阿里云·node.js·云计算
xd000023 小时前
8.axios Http网络请求库(1)
node.js
拉不动的猪3 小时前
都25年啦,还有谁分不清双向绑定原理,响应式原理、v-model实现原理
前端·javascript·vue.js
烛阴3 小时前
Python枚举类Enum超详细入门与进阶全攻略
前端·python