gzh b站,有专门的源码解析课程
// 1. 导入Vue构造函数:从vue库中引入核心Vue类,用于后续创建Vue实例
import Vue from 'vue'
// 2. 导入js-cookie库:引入操作浏览器Cookie的工具库,方便存储/读取Cookie(如用户配置、token等)
import Cookies from 'js-cookie'
// 3. 导入Element UI组件库:引入Vue生态常用的UI组件库(按钮、表格、弹窗等)
import Element from 'element-ui'
// 4. 导入Element UI自定义主题样式:加载项目自定义的Element UI样式(覆盖默认主题,如颜色、字体)
import './assets/styles/element-variables.scss'
// 5. 导入全局通用样式:加载项目全局共享的CSS样式(如基础布局、通用类名)
import '@/assets/styles/index.scss' // global css
// 6. 导入若依框架专属样式:加载若依(Ruoyi)后台管理框架的自定义样式(适配框架布局)
import '@/assets/styles/ruoyi.scss' // ruoyi css
// 7. 导入根组件App:引入项目最顶层的Vue组件(所有页面都是它的子组件)
import App from './App'
// 8. 导入Vuex状态管理仓库:引入store实例,用于全局状态管理(如用户信息、权限数据)
import store from './store'
// 9. 导入路由实例:引入router实例,用于管理页面路由(页面跳转、路径匹配)
import router from './router'
// 10. 导入自定义指令:引入全局自定义指令(如权限控制指令v-permission、防抖指令v-debounce)
import directive from './directive' // directive
// 11. 导入自定义插件:引入全局插件(如全局弹窗、请求拦截器封装等)
import plugins from './plugins' // plugins
// 12. 从请求工具中导入下载方法:引入封装好的文件下载工具函数(处理接口返回的文件流)
import { download } from '@/utils/request'
// 13. 导入图标配置:加载项目中的SVG图标或图标库(如自定义图标组件)
import './assets/icons' // icon
// 14. 导入权限控制逻辑:加载路由守卫(如登录验证、权限判断,控制页面访问权限)
import './permission' // permission control
// 15. 从系统API中导入获取字典数据的方法:用于请求后端字典数据(如下拉框选项、状态映射)
import { getDicts } from "@/api/system/dict/data";
// 16. 从系统API中导入获取配置的方法:用于请求后端系统配置(如网站标题、全局开关)
import { getConfigKey } from "@/api/system/config";
// 17. 从若依工具库中导入常用工具函数:
// - parseTime:时间格式化(如把时间戳转成"YYYY-MM-DD")
// - resetForm:表单重置(清空表单字段)
// - addDateRange:给请求参数添加日期范围(如开始时间、结束时间)
// - selectDictLabel:根据字典值获取字典标签(如1→"启用")
// - selectDictLabels:批量获取字典标签
// - handleTree:处理树形结构数据(如格式化树形菜单)
import { parseTime, resetForm, addDateRange, selectDictLabel, selectDictLabels, handleTree } from "@/utils/ruoyi";
// 18. 导入分页组件:引入通用分页组件(列表页底部的页码、条数选择)
import Pagination from "@/components/Pagination";
// 19. 导入表格工具组件:引入表格顶部的工具条组件(如搜索、刷新、新增按钮)
import RightToolbar from "@/components/RightToolbar"
// 20. 导入富文本组件:引入富文本编辑器(如文章编辑、内容录入)
import Editor from "@/components/Editor"
// 21. 导入文件上传组件:引入通用文件上传组件(如上传Excel、文档)
import FileUpload from "@/components/FileUpload"
// 22. 导入图片上传组件:引入图片上传组件(如头像、封面图上传,带预览、删除)
import ImageUpload from "@/components/ImageUpload"
// 23. 导入图片预览组件:引入图片预览组件(如点击图片放大查看)
import ImagePreview from "@/components/ImagePreview"
// 24. 导入字典标签组件:引入字典标签组件(根据字典值显示对应的标签样式,如状态标签)
import DictTag from '@/components/DictTag'
// 25. 导入vue-meta库:引入管理页面Meta标签的插件(如动态设置页面标题、keywords)
import VueMeta from 'vue-meta'
// 26. 导入字典数据组件:引入字典数据管理组件(用于全局加载字典数据,避免重复请求)
import DictData from '@/components/DictData'
// 27. 全局方法挂载:将常用方法挂载到Vue.prototype上,所有组件可通过this直接调用
Vue.prototype.getDicts = getDicts // 挂载"获取字典数据"方法
Vue.prototype.getConfigKey = getConfigKey // 挂载"获取系统配置"方法
Vue.prototype.parseTime = parseTime // 挂载"时间格式化"方法
Vue.prototype.resetForm = resetForm // 挂载"表单重置"方法
Vue.prototype.addDateRange = addDateRange // 挂载"添加日期范围"方法
Vue.prototype.selectDictLabel = selectDictLabel // 挂载"获取单个字典标签"方法
Vue.prototype.selectDictLabels = selectDictLabels // 挂载"获取多个字典标签"方法
Vue.prototype.download = download // 挂载"文件下载"方法
Vue.prototype.handleTree = handleTree // 挂载"处理树形数据"方法
// 28. 全局组件挂载:将常用组件注册为全局组件,所有组件无需再次导入即可直接使用
Vue.component('DictTag', DictTag) // 全局注册字典标签组件
Vue.component('Pagination', Pagination) // 全局注册分页组件
Vue.component('RightToolbar', RightToolbar) // 全局注册表格工具组件
Vue.component('Editor', Editor) // 全局注册富文本组件
Vue.component('FileUpload', FileUpload) // 全局注册文件上传组件
Vue.component('ImageUpload', ImageUpload) // 全局注册图片上传组件
Vue.component('ImagePreview', ImagePreview) // 全局注册图片预览组件
// 29. 安装自定义指令:执行自定义指令的安装逻辑,让全局指令生效
Vue.use(directive)
// 30. 安装自定义插件:执行自定义插件的安装逻辑,让全局插件生效
Vue.use(plugins)
// 31. 安装vue-meta插件:启用Meta标签管理功能
Vue.use(VueMeta)
// 32. 初始化字典数据组件:执行字典组件的安装逻辑(如全局加载基础字典数据)
DictData.install()
/**
* 注释说明:
* 如果你不想使用项目自带的mock-server(模拟接口服务器)
* 而是想使用MockJs库来模拟API接口返回数据
* 可以在这里执行mockXHR()方法(需先导入相关Mock配置)
*
* 注意:当前配置下,MockJs会在生产环境中生效
* 项目正式上线前,必须删除Mock相关代码,避免影响真实接口请求!!!
*/
// 33. 安装Element UI并配置默认尺寸:
// - 从Cookie中读取用户保存的组件尺寸(如"small"、"medium")
// - 若Cookie中无数据,默认使用"medium"尺寸(Element UI默认值)
Vue.use(Element, {
size: Cookies.get('size') || 'medium' // set element-ui default size
})
// 34. 关闭Vue生产环境提示:禁止Vue在生产环境下输出控制台提示(如版本信息、建议等)
Vue.config.productionTip = false
// 35. 创建Vue实例并启动应用:
new Vue({
el: '#app', // 挂载目标:将Vue实例挂载到index.html中id为"app"的DOM元素上
router, // 注入路由实例:让整个应用支持路由功能(this.$router、this.$route)
store, // 注入Vuex仓库:让整个应用支持全局状态管理(this.$store)
render: h => h(App) // 渲染根组件:将App.vue作为根组件渲染到挂载点(h是createElement的简写,用于创建虚拟DOM)
})
01-18
4172
4172

被折叠的 条评论
为什么被折叠?



