为项目命名 选择vue 框架 选择TS
启动测试: npm run dev
开始整合 element-plus
npm install element-plus --save
npm install unplugin-vue-components unplugin @vitejs/plugin-vue --save-dev
修改main.ts
import { createApp } from 'vue'
import './style.css'
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')
修改vite.config.ts
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'export default defineConfig({plugins: [vue(),Components({resolvers: [ElementPlusResolver()],dts: true, // 自动生成一个 components.d.ts 文件,帮助 TS 识别}),],
})
检查 tsconfig.app.json
{"files": [],"references": [{ "path": "./tsconfig.app.json" },{ "path": "./tsconfig.node.json" }]
}
修改 tsconfig.app.json
{"extends": "@vue/tsconfig/tsconfig.dom.json","compilerOptions": {"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",/* Linting */"strict": true,"noUnusedLocals": true,"noUnusedParameters": true,"erasableSyntaxOnly": true,"noFallthroughCasesInSwitch": true,"noUncheckedSideEffectImports": true,"types": ["element-plus/global"]},"include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}
修改 App.vue
<template><Login/>
</template><script setup lang="ts">
import Login from './components/Login.vue'
</script><style scoped>
</style>
Login.vue
<template><div class="login-container"><el-card class="box-card"><template #header><div>用户登录</div></template><el-form :model="form" :rules="rules" ref="formRef"><el-form-item label="用户名" prop="username"><el-input v-model="form.username" /></el-form-item><el-form-item label="密码" prop="password"><el-input v-model="form.password" type="password" show-password /></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">登录</el-button><el-button @click="onReset">重置</el-button></el-form-item></el-form></el-card></div>
</template><script setup lang="ts">
import { ref } from "vue";const form = ref({ username: "", password: "" });
const rules = {username: [{ required: true, message: "请输入用户名", trigger: "blur" }],password: [{ required: true, message: "请输入密码", trigger: "blur" }],
};
const formRef = ref();function onSubmit() {if (formRef.value) {formRef.value.validate((valid) => {if (valid) alert("提交成功");});}
}function onReset() {if (formRef.value) {formRef.value.resetFields();}
}
</script><style scoped>
.login-container {display: flex;justify-content: center;align-items: center;height: 100vh;
}
.box-card {width: 400px;
}
</style>
npm run dev 效果