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'

插槽

相关推荐
平头哥~4 分钟前
Day 07 _ 那条 1px 的线,为什么在手机上忽粗忽细
前端·css·样式·学习资料
小江的记录本22 分钟前
【CSS】CSS 动画:transition、animation、transform、CSS3 新特性(附《思维导图》)
前端·css·安全·spring·前端框架·css3·动画
circuitsosk27 分钟前
任务规划器的三种范式对比:ReAct、Plan-and-Execute 与 Tree-of-Thought 在真实业务中的取舍
前端·javascript·python·react.js·llm·ai agent
hzxpaipai2 小时前
企业官网技术架构拆解:前端、后台、数据库、服务器如何协同
前端·数据库·架构
深念Y4 小时前
Lenovo XiaoXinAir 14 — 性能模式切换
前端·网络
计算机魔术师4 小时前
Meta突然杀进第一梯队:一个新模型,把AI推理成本打下来8倍
前端
IT_陈寒4 小时前
Redis缓存雪崩把我坑惨了,这次长记性了
前端·人工智能·后端
风骏时光牛马4 小时前
提示词工程:大模型效能挖掘与指令设计实战
前端
仓三5 小时前
Chrome DevTools MCP 上手:让 Coding Agent 自己调试前端页面
前端·chrome devtools·mcp