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'

插槽

相关推荐
蓝倾3 分钟前
淘宝批量获取商品SKU实战案例
前端·后端·api
comelong7 分钟前
Docker容器启动postgres端口映射失败问题
前端
花海如潮淹9 分钟前
硬件产品研发管理工具实战指南
前端·python
用户3802258598249 分钟前
vue3源码解析:依赖收集
前端·vue.js
WaiterL10 分钟前
一文读懂 MCP 与 Agent
前端·人工智能·cursor
gzzeason12 分钟前
使用Vite创建React初始化项目
前端·javascript·react.js
又双叒叕77813 分钟前
React19 新增Hooks:useOptimistic
前端·javascript·react.js
归于尽32 分钟前
V8 引擎是如何给 JS"打扫房间"的 ?
前端·javascript
实习生小黄32 分钟前
express 连接在线数据库踩坑
node.js·express
小old弟32 分钟前
让对象保持定义的顺序来排列
前端