ruoyi-vue(十四)——前端框架及package.json,vite.config.js, main.js记录介绍

news/2025/9/24 8:57:26/文章来源:https://www.cnblogs.com/yfceshi/p/19108531

一、Vue

Vue是什么

Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建,并提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。无论是简单还是复杂的界面,Vue 都可以胜任。
具体内容可以从Vue官方文档中进行了解,我这里选用的是ruoyi vue3版本的前端代码。

二、package.json

有点儿类似后端的Maven,可以配置依赖包以及启动的相关信息,简单的来说是前端的一个版本管理工具。
其定义了ruoyi项目基本信息、依赖包和构建脚本。主要包含:项目元数据(名称、版本等)、运行和构建脚本(vite 相关命令)、生产依赖(vue、element-plus 等)和开发依赖(vite 插件等),下面来看一下具体内容。下面来看一下具体内容

{
// 项目名称
"name": "ruoyi",
// 项目版本号
"version": "3.9.0",
// 项目描述
"description": "若依管理系统",
// 作者
"author": "若依",
// MIT开源许可证
"license": "MIT",
// 指定模块系统为ES6模块
"type": "module",
// 定义项目开发和构建时使用的命令
"scripts": {
// 启动开发服务器,使用vite
"dev": "vite",
// 生产环境构建,使用vite build
"build:prod": "vite build",
// 预发布环境构建,使用vite build --mode staging
"build:stage": "vite build --mode staging",
// 预览构建后的项目,使用vite preview
"preview": "vite preview"
},
// 代码仓库
"repository": {
"type": "git",
"url": "https://gitee.com/y_project/RuoYi-Vue.git"
},
// 依赖包
"dependencies": {
// Element Plus 图标库
"@element-plus/icons-vue": "2.3.1",
// Vue的富文本编辑器组件
"@vueup/vue-quill": "1.2.0",
// Vue Composition API实用工具集合
"@vueuse/core": "13.3.0",
// HTTP 客户端
"axios": "1.9.0",
// 剪贴板操作库
"clipboard": "2.0.11",
// 图标库,用于数据可视化
"echarts": "5.6.0",
// UI组件库
"element-plus": "2.9.9",
// 文件保存库
"file-saver": "2.0.5",
// 轻量级模糊搜索库
"fuse.js": "6.6.2",
// JavaScript 代码美化工具
"js-beautify": "1.14.11",
// Cookie 操作库
"js-cookie": "3.0.5",
// JavaScript 加密库
"jsencrypt": "3.3.2",
// 顶部加载进度条
"nprogress": "0.2.0",
// Vue 状态管理库
"pinia": "3.0.2",
// 可拖拽分割面板组件
"splitpanes": "4.0.4",
// Vue3核心框架
"vue": "3.5.16",
// 图片裁剪组件
"vue-cropper": "1.1.1",
// Vue 路由管理器
"vue-router": "4.5.1",
// 拖拽排序组件
"vuedraggable": "4.1.0"
},
// 项目开发时需要的依赖包
"devDependencies": {
// Vite的Vue插件,用于处理Vue文件
"@vitejs/plugin-vue": "5.2.4",
// Sass样式预处理器
"sass-embedded": "1.89.1",
// 自动导入API的Vite插件
"unplugin-auto-import": "0.18.6",
// 扩展Vue setup语法的插件
"unplugin-vue-setup-extend-plus": "1.0.1",
// 构建工具
"vite": "6.3.5",
// 构建时文件压缩插件
"vite-plugin-compression": "0.5.1",
// SVG图标处理插件
"vite-plugin-svg-icons": "2.0.1"
},
// 依赖覆盖
"overrides": {
// 指定quill包的版本为2.0.2,用于解决依赖冲突 
"quill": "2.0.2"
}
}

三、vite.config.js

为 ruoyi 项目提供了完整的开发和构建环境配置,包括路径别名、插件系统、代理设置、打包规则等,确保项目能够高效开发和稳定构建。

在Vue2中用的是vue.config.js而在Vue3中用的是vite.config.js,vue.config.js 是 Vue CLI(基于 webpack)项目的配置文件,使用 CommonJS 语法,配置 webpack 构建选项。vite.config.js 是 Vite 项目的配置文件,使用 ES6 模块语法,配置 Vite 构建选项。Vite官方文档

// 导入必要的模块和插件
import { defineConfig, loadEnv
} from 'vite'
import path from 'path'
import createVitePlugins from './vite/plugins'
// 定义后端接口基础url
const baseUrl = 'http://localhost:8080'
// https://vitejs.dev/config/
export default defineConfig(({ mode, command
}) =>
{
// 加载环境变量
const env = loadEnv(mode, process.cwd())
const {
VITE_APP_ENV
} = env
return {
// 部署生产环境和开发环境下的URL。
// 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上
// 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。
// 例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。
base: VITE_APP_ENV === 'production' ? '/' : '/',
// 插件配置
plugins: createVitePlugins(env, command === 'build'),
// 路径解析配置
resolve: {
// https://cn.vitejs.dev/config/#resolve-alias
alias: {
// 设置路径,~ 指向项目根目录
'~': path.resolve(__dirname, './'),
// 设置别名,@指向src目录
'@': path.resolve(__dirname, './src')
},
// https://cn.vitejs.dev/config/#resolve-extensions
// 配置文件扩展名自动解析,引入时不需要写文件后缀
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue']
},
// 打包配置
build: {
// https://vite.dev/config/build-options.html
// 开发环境生成内联源码映射,生产环境不生产
sourcemap: command === 'build' ? false : 'inline',
// 构建输出目录为dist
outDir: 'dist',
// 静态资源目录为 assets
assetsDir: 'assets',
// 设置块大小警告限制为:2000KB
chunkSizeWarningLimit: 2000,
// 自定义输出文件命名规则
rollupOptions: {
output: {
chunkFileNames: 'static/js/[name]-[hash].js',
entryFileNames: 'static/js/[name]-[hash].js',
assetFileNames: 'static/[ext]/[name]-[hash].[ext]'
}
}
},
// vite 相关配置
server: {
// 使用端口
port: 80,
// 监听所有地址
host: true,
// 启动后自动打开浏览器
open: true,
// 代理配置
proxy: {
// https://cn.vitejs.dev/config/#server-proxy
// /dev-api 路径代理到 http://localhost:8080
'/dev-api': {
target: baseUrl,
changeOrigin: true,
// 重写路径,去掉 /dev-api 前缀
rewrite: (p) => p.replace(/^\/dev-api/, ''),
// 添加 X-Forwarded-* 头信息
configure: (proxy, options) =>
{
proxy.on('proxyReq', (proxyReq, req, res) =>
{
// 添加X-Forwarded-*头
proxyReq.setHeader('X-Forwarded-Host', req.headers.host);
proxyReq.setHeader('X-Forwarded-Proto', 'http');
proxyReq.setHeader('X-Forwarded-For', req.socket.remoteAddress);
});
}
},
// springdoc proxy
// /v3/api-docs/ 路径也代理到后端,用于 API 文档
'^/v3/api-docs/(.*)': {
target: baseUrl,
changeOrigin: true,
}
}
},
// css配置
css: {
// 使用 PostCSS 插件移除 CSS 中的 charset 声明,避免重复或冲突
postcss: {
plugins: [
{
postcssPlugin: 'internal:charset-removal',
AtRule: {
charset: (atRule) =>
{
if (atRule.name === 'charset') {
atRule.remove()
}
}
}
}
]
}
}
}
})

四、main.js

ruoyi 项目的 Vue 应用入口文件,主要功能包括:

  • 创建 Vue 应用实例:使用 createApp 创建应用
  • 导入和配置依赖:引入 Element Plus、路由、状态管理等
  • 全局组件注册:注册分页、编辑器、上传等通用组件
  • 全局方法挂载:挂载字典处理、时间解析等工具方法
  • 权限控制:引入权限控制模块
  • 应用启动:挂载到 #app DOM 元素
    核心作用是初始化并启动整个 Vue 应用。
// 从 Vue 3 导入 createApp 函数创建应用实例
import { createApp
} from 'vue'
// 引入 js-cookie 用于操作浏览器 cookie
import Cookies from 'js-cookie'
// 导入 Element Plus 组件库及其样式
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import 'element-plus/theme-chalk/dark/css-vars.css'
import locale from 'element-plus/es/locale/lang/zh-cn'
// 导入全局样式文件
import '@/assets/styles/index.scss' // global css
// 核心应用模块
// 导入根组件 App.vue
import App from './App'
// 导入状态管理 store(Pinia 或 Vuex)
import store from './store'
// 导入路由配置
import router from './router'
// 导入自定义指令
import directive from './directive' // directive
// 注册指令
// 导入自定义插件
import plugins from './plugins' // plugins
// 导入下载工具函数
import { download
} from '@/utils/request'
// svg图标
import 'virtual:svg-icons-register'
import SvgIcon from '@/components/SvgIcon'
import elementIcons from '@/components/SvgIcon/svgicon'
// 导入权限控制模块
import './permission' // permission control
// 导入工具函数
import { useDict
} from '@/utils/dict'
import { getConfigKey
} from "@/api/system/config"
import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels
} from '@/utils/ruoyi'
// 导入通用业务组件
// 分页组件
import Pagination from '@/components/Pagination'
// 自定义表格工具组件
import RightToolbar from '@/components/RightToolbar'
// 富文本组件
import Editor from "@/components/Editor"
// 文件上传组件
import FileUpload from "@/components/FileUpload"
// 图片上传组件
import ImageUpload from "@/components/ImageUpload"
// 图片预览组件
import ImagePreview from "@/components/ImagePreview"
// 字典标签组件
import DictTag from '@/components/DictTag'
// 创建应用实例
const app = createApp(App)
// 全局方法挂载,将常用的工具函数挂载到全局属性中,使得在任何组件中都可以通过 this 访问这些方法
app.config.globalProperties.useDict = useDict
app.config.globalProperties.download = download
app.config.globalProperties.parseTime = parseTime
app.config.globalProperties.resetForm = resetForm
app.config.globalProperties.handleTree = handleTree
app.config.globalProperties.addDateRange = addDateRange
app.config.globalProperties.getConfigKey = getConfigKey
app.config.globalProperties.selectDictLabel = selectDictLabel
app.config.globalProperties.selectDictLabels = selectDictLabels
// 全局组件挂载,这样在任何组件模板中都可以直接使用这些组件,无需单独导入
app.component('DictTag', DictTag)
app.component('Pagination', Pagination)
app.component('FileUpload', FileUpload)
app.component('ImageUpload', ImageUpload)
app.component('ImagePreview', ImagePreview)
app.component('RightToolbar', RightToolbar)
app.component('Editor', Editor)
// 安装路由、状态管理、自定义插件和图标组件
app.use(router)
app.use(store)
app.use(plugins)
app.use(elementIcons)
app.component('svg-icon', SvgIcon)
// 自定义指令应用
directive(app)
// 使用element-plus 并且设置全局的大小,配置 Element Plus 使用中文语言包,并根据 cookie 中的设置确定组件大小
app.use(ElementPlus, {
locale: locale,
// 支持 large、default、small
size: Cookies.get('size') || 'default'
})
// 应用挂载,Vue 应用挂载到页面中 id 为 'app' 的 DOM 元素上
app.mount('#app')

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一个优秀的网站免费下载app软件安装

E1 PCM复用设备能当程控交换机用吗?这个问题在平时与用户沟通中发现,发现有不少用户认为E1 PCM复用设备可以当程控交换机使用,不仅能实现电话线远端延伸,还可以实现电话机交换功能。 其实这个观点是错误的,E1 PCM复用…

12380网站建设意见成都建设局官网

(//div[starts-with(class,‘abcolumn-light__listCell‘)])[4] 注意:一定要加小括号,然后再加索引号

网站开发项目计划书模板大型网站建设行情

文章目录介绍1、获取code并向服务器发送请求2、引入发送HTTP请求的maven依赖3、封装HTTP请求工具类4、编写控制器介绍 注意事项: 必须是GET请求微信发送的code码只能使用一次 1、获取code并向服务器发送请求 注:http://localhost:8080/portal/blog/a…

适合做外链的网站wordpress 迁移域名

内存操作命令 直接对DRAM进行读写的操作,uboot常用的内存操作命令有md,nm,mm,mw,cp和cmp. md命令: 显示内存值 # md md - memory display Usage: md [.b, .w, .l, .q] address [# of objects] b:1个字节 byte w:2个字节 world l:4个字节 long of objects 以word 为单位的1…

mvc5 网站开发之美 pdf画册设计说明

原标题:六星教育:如何在PHP项目实战中取胜,获得腾讯等大厂的offer我们在进行PHP学习的时候,总会强调实战的重要性。事实也是如此,如果光知道理论知识,而缺乏实际项目的参与与运作,就会变得纸上谈…

网站管理助手v3.0广州 网站建设公司

一、应用场景 阿里巴巴中国站获得公司档案信息 API接口的应用场景可以包括但不限于以下几种情况: 1、企业信息查询:API接口可用于查询企业的基本档案信息,如企业名称、注册地址、法定代表人、经营范围等。这些信息对于了解企业背景、信用状…

2025.9.24——1橙

普及- P1855 榨取kkksc03 简单的二维背包DP

完整教程:MySQL 启动日志报错: File /mysql-bin.index not found (Errcode: 13 - Permission denied)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

用什么建设网站ps网页设计从零开始教程

要实现的内容&#xff1a;手写签名&#xff0c;协议内容。点击提交后&#xff1a;生成1张图片&#xff0c;有协议内容和签署日期和签署人。 实现的效果图如下&#xff1a; 1、签名页面 <template><view class"index"><u-navbar title"电子协议…

设计网站推荐html简述建设网站的一般过程

文章目录 题目描述题解思路题解代码题目链接 题目描述 题解思路 我们遍历长度为k的窗口&#xff0c;用一个哈希表记录窗口内的所有元素&#xff08;用来对窗口内元素去重&#xff09;&#xff0c;我们取哈希表中元素数量大于等于m的窗口总和的最大值 题解代码 use std::coll…

网站建设信息平台为企业做贡献的句子

1.uImage zImage Image bzImage的区别 \qquaduImage既包括内核数据&#xff0c;又包括和uboot的衔接数据&#xff1b;zImage Image bzImage本质是一样的&#xff0c;但是数据压缩的格式不同&#xff0c;只包含内核内容。 2.uboot内核启动条件 \qquad启动参数&#xff1b;文件系…

网站开发的相关技能有哪些积分网站运营建设投标书

告别2023&#xff0c;迎接2024。大模型技术已成为业界关注焦点&#xff0c;你是否也渴望掌握这一领域却又不知从何学起&#xff1f; 本篇文章将特别针对入门新手&#xff0c;以浅显易懂的方式梳理大模型的发展历程、核心网络结构以及数据微调等关键技术。 如果你在阅读中收获…

如何用 ftp上传网站网页制作模板登录

学生公寓管理系统目录 目录 基于Springboot的学生公寓管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、宿舍列表 2、宿舍公告信息管理 3、宿舍公告类型管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八…

企业门户网站的意义杨凌开发建设局网站

本文转载自公众号&#xff1a;AI科技大本营。 分享嘉宾 | 刘升平&#xff08;云知声 AI Labs 资深技术专家&#xff09;来源 | AI 科技大本营在线公开课人机对话系统&#xff0c;或者会话交互&#xff0c;有望成为物联…

网站服务器备案查询网站备案棋牌源码论坛

一、行业背景 二、行业特点 1.供电可靠性要求高&#xff1a;医院配电系统复杂&#xff0c;门诊、急救、手术室、ICU/CCU、血液透析等场合特一级和一级负荷比较多&#xff0c;一旦发生故障会造成严重影响&#xff0c;对配电可靠性要求极高。 2.能耗水平高&#xff1a;医院能耗…

网站开发的费用景德镇建站公司

注意&#xff1a;这种写法&#xff0c;是有问题的。注册事件是在页面加载完毕以后就完成了&#xff0c;但此时并没有触发事件。事件触发是由用户在页面上点击时才会触发&#xff0c;所以说当用户点击时&#xff0c;才会执行事件处理函数&#xff0c;那么此时的i已经变成了4&…

做企业网站有什么好处访问紧急升级中通知问升级

近日博主 ruanyf 在网上发布了一条关于套接字“socket”的解释&#xff0c;引发了网友对于那些 IT 界的神翻译的讨论&#xff1a; 突然想到&#xff0c;socket就是插座。服务器的socket&#xff0c;就是服务器提供插座&#xff0c;等着客户端的插头插进来。一旦插入完成&#x…

AT_arc172_d [ARC172D] Distance Ranking

比较牛的构造题,AT 出题人还是太有水平了。 首先我们想如果两两距离相同该怎么构造。 这一步比较简单,直接每一维都分配给一个坐标一个 \(1\) 即可。 然后我们改成小于号,考虑一些微小的扰动,将上述 \(1\) 改成 \(…

网站建设方向课程苏州网站建设选苏州梦易行

文章目录 前言一、SpringMvc1、简介2、核心组件和调用流程2.1 涉及组件的理解 3、小案例快速体验3.1场景需求3.1.1 导入依赖3.1.2 controller声明3.1.3 核心配置类3.1.4 环境搭建3.1.6 配置tomcat3.1.7 测试 二、SpringMvc 接收参数1.路径设置注解2、param接收参数四种类型2.1 …

江苏省建设工程质量监督站网站优设网专利

1.概述 本文将重点介绍通过Spring设置Hibernate 3 –我们将研究如何同时使用XML和Java配置通过Hibernate 3和MySQL设置Spring 3。 2. Hibernate 3的Java Spring配置 使用Spring和Java配置来设置Hibernate 3很简单&#xff1a; import java.util.Properties; import javax.sql…