rouyi-vue-pro+vue3+vite4+Element Plus项目中使用生成Vue2+Element UI标准模板

本文主要是介绍rouyi-vue-pro+vue3+vite4+Element Plus项目中使用生成Vue2+Element UI标准模板,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

运行一个pro-vue3的前端项目,以及后端服务

在基础设施-代码生成模块中选择某张数据库表导入,并编辑生成信息,前端类型:Vue2+Element UI标准模板

在vue3项目中创建一个vue文件

<template>
</template><script>
// import {create} from '@/api/test'export default{created(){create().then(res => {console.log(res);})}
}
</script>

1.4 src\api\test.js

import request from '@/utils/request'// 创建药品
export function create(data) {return request({url: '/drug//create',method: 'post',data: data})
}

Vue2+Element UI标准模板生成的前端封装好的request请求接口对象

1.5 报错

09:47:36 [vite] hmr update /src/views/tb/drug/index.vue
Failed to load url /src/utils/request (resolved id: C:/Users/lxz/Desktop/project/drug-system/ruoyi-vue-pro-drug/yudao-ui-admin-vue3/src/utils/request) in C:/Users/lxz/Desktop/project/drug-system/ruoyi-vue-pro-drug/yudao-ui-admin-vue3/src/api/test.js. Does the file exist?

问题:在 更新的/src/views/tb/drug/index.vue 文件中,没有找到 /src/utils/request 这个文件

解决办法: 从vue2项目中将/src/utils/request.js 这个文件复制到vue3项目的对应文件夹下

1.6 报错

09:44:01 [vite] Internal server error: Failed to resolve import "element-ui" from "src\utils\request.js". Does the file exist?Plugin: vite:import-analysisFile: C:/Users/lxz/Desktop/project/drug-system/ruoyi-vue-pro-drug/yudao-ui-admin-vue3/src/utils/request.js:2:511  |  import axios from 'axios'2  |  import {Message, MessageBox, Notification} from 'element-ui'|                                                    ^3  |  import store from '@/store'4  |  import {getAccessToken, getRefreshToken, getTenantId, setToken} from '@/utils/auth'
  • import axios from ‘axios’

    这个是vue2项目中直接引入使用的外部axios依赖

     "dependencies": {"@babel/parser": "7.18.4","@riophae/vue-treeselect": "0.4.0","axios": "0.27.2",...
    

    在vue3项目中没有直接使用这个依赖,而是对axios进行了扩展

      "dependencies": {"@element-plus/icons-vue": "^2.1.0","@form-create/designer": "^3.1.3","@form-create/element-ui": "^3.1.24","@iconify/iconify": "^3.1.1","@videojs-player/vue": "^1.0.0","@vueuse/core": "^10.6.1","@wangeditor/editor": "^5.1.23","@wangeditor/editor-for-vue": "^5.1.10","@zxcvbn-ts/core": "^3.0.4","animate.css": "^4.1.1","axios": "^1.6.1",
    

    vue3项目中的axios封装链:

    1. 从vue3项目的src/system/area/index.ts文件中封装的request对象进行向底层追溯

      import request from '@/config/axios'// 获得地区树
      export const getAreaTree = async () => {return await request.get({ url: '/system/area/tree' })
      }// 获得 IP 对应的地区名
      export const getAreaByIp = async (ip: string) => {return await request.get({ url: '/system/area/get-by-ip?ip=' + ip })
      }
      
    2. 进入 src/config/axios/index.ts文件中

      import { service } from './service'import { config } from './config'const { default_headers } = configconst request = (option: any) => {const { url, method, params, data, headersType, responseType, ...config } = optionreturn service({url: url,method,params,data,...config,responseType: responseType,headers: {'Content-Type': headersType || default_headers}})
      }export default {get: async <T = any>(option: any) => {const res = await request({ method: 'GET', ...option })return res.data as unknown as T},post: async <T = any>(option: any) => {const res = await request({ method: 'POST', ...option })return res.data as unknown as T},postOriginal: async (option: any) => {const res = await request({ method: 'POST', ...option })return res},delete: async <T = any>(option: any) => {const res = await request({ method: 'DELETE', ...option })return res.data as unknown as T},put: async <T = any>(option: any) => {const res = await request({ method: 'PUT', ...option })return res.data as unknown as T},download: async <T = any>(option: any) => {const res = await request({ method: 'GET', responseType: 'blob', ...option })return res as unknown as Promise<T>},upload: async <T = any>(option: any) => {option.headersType = 'multipart/form-data'const res = await request({ method: 'POST', ...option })return res as unknown as Promise<T>}
      }
      

      封装http请求对象,并导出get、post、postOriginal、delete、put、download、upload等公共方法

    3. 进入 ./config文件中

      const config: {base_url: stringresult_code: number | stringdefault_headers: AxiosHeadersrequest_timeout: number
      } = {/*** api请求基础路径*/base_url: import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL,/*** 接口成功返回状态码*/result_code: 200,/*** 接口请求超时时间*/request_timeout: 30000,/*** 默认接口请求类型* 可选值:application/x-www-form-urlencoded multipart/form-data*/default_headers: 'application/json'
      }export { config }
      

      封装了http请求的请求基础路径、返回结果状态码、请求头、请求超时时间等配置信息

    4. 进入./service文件中

      import axios, {AxiosError,AxiosInstance,AxiosRequestHeaders,AxiosResponse,InternalAxiosRequestConfig
      } from 'axios'
      

​ 在这里可以看到vue2项目中使用的axios对象,此时,vue3项目中使用的axios版本和vue2项目中使用的版本不一致可能会存在隐患

  • import {Message, MessageBox, Notification} from ‘element-ui’

​ 此处引用了element-ui的依赖,在vue3项目中已经弃用了element-ui而是采用Element Plus

​ vue3项目中的依赖

    "element-plus": "2.4.2",

​ vue2项目中依赖

  "element-ui": "2.15.12",

​ 需要对vue2项目中的request.js中使用的element-ui进行改造成element-plus中的组件!

  • import store from ‘@/store’

    在vue2项目中使用的vuex来做状态管理的,在vue3项目中是没有引入vuex依赖的

    在vue3项目中使用了vue-demi来解决这个问题吗,那么我们在保证vue-demi可用的前提下可以不用考虑这个问题!

  • import {getAccessToken, getRefreshToken, getTenantId, setToken} from ‘@/utils/auth’

    这个在vue3项目中已经兼容了并且做了局部功能升级,在vue2版本的项目中没有对AccessTokenKey,RefreshTokenKey加入到浏览器本地存储中,在vue3项目中引入了web-storage-cache来做本地存储

       "web-storage-cache": "^1.1.1",
    

可以在使用生成Vue2+Element UI标准模板的api.js文件中使用vue3项目封装的ts文件中对象

// import request from '@/utils/request'
// 这个是vue3项目中使用.ts文件封装的http请求对象
import request from '@/config/axios'// 创建药品
export function create(data) {return request({url: '/drug//create',method: 'post',data: data})
}// 获得地区树 这个是ts文件封装的http请求对象的使用方法
export const getAreaTree = async () => {return await request.get({ url: '/system/area/tree' })
}

这个文件是src\api\test.js

<template>
111
</template><script>
import {getAreaTree} from '@/api/test'export default{created(){getAreaTree().then(res => {console.log(res);})}
}
</script>

这是测试的vue文件打印到请求的数据
在这里插入图片描述

根据vue2模板生成的vue页面代码无法直接在vue3项目中使用,需要逐个修改生成的.vue文件中的代码

  Plugin: vite-plugin-eslintFile: C:/Users/lxz/Desktop/project/drug-system/ruoyi-vue-pro-drug/yudao-ui-admin-vue3/src/views/tb/drug/index.vue
12:13:26 [vite] Internal server error:
C:\Users\lxz\Desktop\project\drug-system\ruoyi-vue-pro-drug\yudao-ui-admin-vue3\src\views\tb\drug\index.vue7:89   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier10:99   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier13:95   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier16:92   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier19:100  error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier22:96   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier25:25   warning  Expected a linebreak before this attribute                                            vue/first-attribute-linebreak

这篇关于rouyi-vue-pro+vue3+vite4+Element Plus项目中使用生成Vue2+Element UI标准模板的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/517709

相关文章

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

CSS place-items: center解析与用法详解

《CSSplace-items:center解析与用法详解》place-items:center;是一个强大的CSS简写属性,用于同时控制网格(Grid)和弹性盒(Flexbox)... place-items: center; 是一个强大的 css 简写属性,用于同时控制 网格(Grid) 和 弹性盒(F

CSS实现元素撑满剩余空间的五种方法

《CSS实现元素撑满剩余空间的五种方法》在日常开发中,我们经常需要让某个元素占据容器的剩余空间,本文将介绍5种不同的方法来实现这个需求,并分析各种方法的优缺点,感兴趣的朋友一起看看吧... css实现元素撑满剩余空间的5种方法 在日常开发中,我们经常需要让某个元素占据容器的剩余空间。这是一个常见的布局需求

CSS Anchor Positioning重新定义锚点定位的时代来临(最新推荐)

《CSSAnchorPositioning重新定义锚点定位的时代来临(最新推荐)》CSSAnchorPositioning是一项仍在草案中的新特性,由Chrome125开始提供原生支持需... 目录 css Anchor Positioning:重新定义「锚定定位」的时代来了! 什么是 Anchor Pos

CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比

《CSS中的Static、Relative、Absolute、Fixed、Sticky的应用与详细对比》CSS中的position属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布... css 中的 position 属性用于控制元素的定位方式,不同的定位方式会影响元素在页面中的布局和层叠关

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

springboot项目中整合高德地图的实践

《springboot项目中整合高德地图的实践》:本文主要介绍springboot项目中整合高德地图的实践,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一:高德开放平台的使用二:创建数据库(我是用的是mysql)三:Springboot所需的依赖(根据你的需求再

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx