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-analysis
  File: C:/Users/lxz/Desktop/project/drug-system/ruoyi-vue-pro-drug/yudao-ui-admin-vue3/src/utils/request.js:2:51
  1  |  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 } = config
      
      const request = (option: any) => {
        const { url, method, params, data, headersType, responseType, ...config } = option
        return 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: string
        result_code: number | string
        default_headers: AxiosHeaders
        request_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文件打印到请求的数据
hmr update /src/views/personnelevaluation/evaluatebatch.vue (x2),前端,ruoyi,vue文章来源地址https://www.toymoban.com/news/detail-771678.html

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

  Plugin: vite-plugin-eslint
  File: 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.vue
    7:89   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   10:99   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   13:95   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   16:92   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   19:100  error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   22:96   error    '.native' modifier on 'v-on' directive is deprecated                                  vue/no-deprecated-v-on-native-modifier
   25:25   warning  Expected a linebreak before this attribute                                            vue/first-attribute-linebreak

到了这里,关于rouyi-vue-pro+vue3+vite4+Element Plus项目中使用生成Vue2+Element UI标准模板的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3.2 + TypeScript + Pinia + Vite4 + Element-Plus + 微前端(qiankun) 后台管理系统模板(已开源---显示项目页面截图)

    Wocwin-Admin,是基于 Vue3.2、TypeScript、Vite、Pinia、Element-Plus、Qiankun(微前端) 开源的一套后台管理模板;同时集成了微前端 qiankun也可以当做一个子应用。项目中组件页面使用了Element-plus 二次封装 t-ui-plus 组件,目前已新增fastmock接口。 Link:https://wocwin.github.io/wocwin-admin/ 账号:

    2024年02月08日
    浏览(82)
  • Vue3.3 + Vite4.3 + TypeScript5+ Element-Plus:从零到一构建企业级后台管理系统(前后端开源)

    vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 + Element Plus 版本的后台管理前端解决方案,技术栈为 Vue3 + Vite4 + TypeScript + Element Plus + Pinia + Vue Router 等当前主流框架。 相较于其他管理前端框架,vue3-element-admin 的优势在于 一有一无 (有配套后端、无复杂封装): 配套完整 Java 后

    2024年02月09日
    浏览(144)
  • 基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    最近得空学习了下uniapp结合vue3搭建跨端项目。之前也有使用uniapp开发过几款聊天/仿抖音/后台管理等项目,但都是基于vue2开发。随着vite.js破局出圈,越来越多的项目偏向于vue3开发,就想着uniapp搭配vite4.x构建项目效果会如何?经过一番尝试果然真香~ uniapp官网提供了  HBuild

    2024年02月09日
    浏览(87)
  • (小程序)基于uniapp+vite4+vue3搭建跨端项目|uni-app+uview-plus模板

    版本信息: 点击编辑器的文件 新建 项目(快捷键Ctrl+N) 2.选择uni-app项目,输入项目名/路径,选择项目模板,勾选vue3版本,点击创建,即可成功创建。 3.点击编辑器的运行 运行到浏览器 选择浏览器 当然也可以运行到手机或模拟器、运行到小程序工具。 到这里一个简单的

    2024年02月16日
    浏览(102)
  • 于vue3+vite+element pro + pnpm开源项目

    河码桌面是一个基于vue3+vite+element pro + pnpm 创建的monorepo项目,项目采用的是类操作系统的web界面,操作起来简单又方便,符合用户习惯,又没有操作系统的复杂! 有两个两个分支,一个是web版本,一个是electron,只需要将分支切换到electron即可,下面有electron的效果图。 web开

    2024年02月12日
    浏览(45)
  • 使用 Vite + Vue3 + Element-Plus + Pinia + Ts 搭建 Vue3 项目

    Vite 需要 Node.js 版本 14.18+,16+。然而,有些模板需要依赖更高的 Node 版本才能正常运行,当你的包管理器发出警告时,请注意升级你的 Node 版本。 首先 npm 输入: Project name :项目名称 Select a framework :选择一个框架 Select a variant :选择 ts 或者 js 输入项目名称后选择 vue 选择

    2024年02月09日
    浏览(63)
  • vue3+vite+element-plus创建项目,修改主题色

    根据官方文档安装依赖 vite.config.js配置 新建一个文修改全局样式的文件 在src下新建styles/element/index.scss文件,内容如下: @forward \\\'element-plus/theme-chalk/src/common/var.scss\\\' with (     $colors: (         \\\'primary\\\': (             //主色             \\\'base\\\':green         )         //修改其他

    2024年02月10日
    浏览(54)
  • 若依(ruoyi)前端Vue3 Element Plus Vite版样式修改

    位置: src/layout/components/Navbar.vue 类名: .navbar 这里主要是修改导航栏的背景色,在修改颜色值时,你可以使用其他十六进制颜色代码,也可以尝试使用RGB、RGBA或HSL等其他表示颜色的方式。这取决于你的设计需求和个人喜好。 这段主要是修改右侧的图标,隐藏、全屏等方法:

    2024年02月03日
    浏览(69)
  • 详解Vite创建Vue3项目+vue-router+ts+vite+element-plus

    前言 在之前的文章中写过“Vue3+TS+ElementPlus的安装和使用教程【详细讲解】”,但那篇文章写的是创建vue3的项目没有使用到Vite构建工具进行创建还是使用的常规webpacket构建工具进行创建的。提到Vite和webpacket的时候我们可以简单说一下。 Vite 和 Webpack 都是现代化的前端构建工

    2024年01月18日
    浏览(62)
  • Vue3+TS+Vite创建项目,并导入Element-plus和Sass

    1.桌面新建一个文件夹Vue3-app 打开编辑器导入文件夹,编辑器打开终端输入或者命令行工具cd到项目目录下输入 npm init vue@latest 回车运行 这里我选择了TS+Vite来开发,并选择安装路由 2.cd到 vue-project目录下 输入 npm install 回车运行 3.安装完成后 输入 npm run dev 回车运行 浏览器打开

    2024年02月16日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包