从0实战一个 vue3+ ts+element-plus 项目
- - 实现一个自定义变量数据渲染
- - vue,config.js配置跨域代理
- - 添加axios请求
- 安装依赖 :
- 封装axios文件
- 引入并使用封装好的请求,发起一个登录请求:
- 使用封装好的, 发起一个登录请求:
- 使用时候报错问题1:
- 使用时候报错问题2:
- - node_modules安装问题
- - 引入element-plus
- 安装
- - 使用vite创建一个vue3+ts+element-plus项目
- 之后使用element-plus
- 问题1 这里又红色下划线, 直接删除引入就可
- - 添加router
- 待更新中.......
<template>
<div class="login">
{{formLabelAlign.name}}
</div>
</template>
<script lang="ts" >
import { reactive } from "vue";
export default {
mane: "login",
setup() {
const formLabelAlign = reactive({
name: "小明",
region: "",
type: ""
});
return { formLabelAlign };
}
};
</script>
module.exports = {
devServer: {
proxy: {
"/api": {
"target": '对应的代理地址',//http://22.15.258.222:8888等
"secure": false,
"changeOrigin": true,
"pathRewrite": {
'^/api': ''
}
}
}
},
}
npm install --save;
npm install vue-axios --save;
import axios from "axios"; //引入
const baseURL = "/api";
const service = axios.create({
baseURL
});
// 发起请求内容, 这里配置根据实际情况配置
service.interceptors.request.use(config => {
config.headers['Content-Type'] = 'application/json;charset=utf-8'
return config
});
// 响应内容, 这里配置根据实际情况配置
service.interceptors.response.use(response => {
// 请求成功时候
if (response.status === 200 && response.data?.success) {
return response.data
} else {
return Promise.reject(response.data)
}
}, error => {// 请求失败时候, 一些逻辑, 根据情况配置
let code = 0
try {
code = error.response.status
} catch (error) {
// 网络请求超时
if (error.toString().indexOf('Error: timeout') !== -1) {
return Promise.reject(error)
}
}
if (code) {
if (code === 401) {
} else {
const errorMsg = error.response.data.errorCode
if (errorMsg !== undefined) {
} else {
}
}
} else {
}
return Promise.reject(error)
});
export default service;
import request from '@/utils/request'
/**
* @description 登录
* @param {*} params
*/
export function adminLogin (data) {//我是简写, 可以根据情况配置其他
console.log(data)
return request({
url: '/admin/login',
method: 'post',
data
})
}
/**
* @description 获取首页信息
* @param {*} params
*/
export function adminHome (params) {
return request({
url: '/user',
method: 'get',
params
})
}
adminLogin({password:"123456",username:"test"}).then((res: any)=>{
console.log(res)
})
无法找到模块“@/api/user.js”的声明文件。“d:/桌面/mq2022/vue3shsili/vue3-typescipt/src/api/user.js”隐式拥有 "any" 类型。ts(7016)
是因为ts中不能直接识别js文件,两种解决方法
(parameter) res: any
(parameter) res: any
参数“res”隐式具有“any”类型。ts(7006)
Parameter ‘res’ implicitly has an ‘any’ type.Vetur(7006)
--legacy-peer-deps
就可以了新建文件夹之后npm init vite@latest
之后选择一些需要的选项按回车健
之后使用上图命令就可以启动了
import { createRouter, createWebHashHistory, createWebHistory, RouteRecordRaw } from 'vue-router'
//views中有新建这些文件
import login from '../views/login/index.vue'
import echart from '../views/echart/index.vue'
/**
* 定义路由模块
*/
const routes: Array<RouteRecordRaw> = [
{
path: '/',
name: 'echart',
component: echart
}
]
/**
* 定义返回模块
*/
const router = createRouter({
history: createWebHistory('/'),
routes
})
export default router
import { createApp } from 'vue'
import App from './App.vue'
import router from './router/index'
createApp(App).use(router).mount('#app')