Vue3入口文件main.js解析

python 复制代码
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
import zhCn from "element-plus/dist/locale/zh-cn.mjs";

const app = createApp(App);

// 注册所有图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}

app.use(store);
app.use(router);
app.use(ElementPlus, {
  locale: zhCn,
});

app.mount("#app");

这是一个 Vue 3 应用的主入口文件,我来详细分析每个部分:

1. 导入依赖模块

javascript 复制代码
import { createApp } from "vue";
  • 从 Vue 3 导入 createApp 函数,这是 Vue 3 创建应用实例的新方式
  • 相比 Vue 2 的 new Vue(),Vue 3 使用函数式创建方式
javascript 复制代码
import App from "./App.vue";
import router from "./router";
import store from "./store";
  • App.vue:根组件,整个应用的入口组件
  • router:Vue Router 路由配置,用于单页面应用的路由管理
  • store:Vuex 或 Pinia 状态管理器,用于全局状态管理
javascript 复制代码
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
import * as ElementPlusIconsVue from "@element-plus/icons-vue";
import zhCn from "element-plus/dist/locale/zh-cn.mjs";
  • ElementPlus:饿了么团队开发的 Vue 3 UI 组件库
  • CSS 样式文件:ElementPlus 的样式表
  • 图标库:ElementPlus 配套的图标组件集合
  • 中文语言包:将 ElementPlus 界面设置为中文

2. 创建应用实例

javascript 复制代码
const app = createApp(App);
  • 使用 createApp() 创建 Vue 应用实例
  • 传入根组件 App 作为参数

3. 批量注册图标组件

javascript 复制代码
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component);
}
  • 遍历 ElementPlus 图标库中的所有图标
  • 将每个图标作为全局组件注册到应用中
  • 注册后可以在任何组件中直接使用这些图标,如 <Edit />, <Delete />

4. 注册插件和中间件

javascript 复制代码
app.use(store);
app.use(router);
app.use(ElementPlus, {
  locale: zhCn,
});
  • app.use(store):注册状态管理器
  • app.use(router):注册路由系统
  • app.use(ElementPlus, { locale: zhCn }):注册 ElementPlus UI 库并配置为中文语言

5. 挂载应用

javascript 复制代码
app.mount("#app");
  • 将 Vue 应用挂载到 HTML 中 id 为 "app" 的 DOM 元素上
  • 通常对应 index.html 中的 <div id="app"></div>
  1. 组件化开发 :使用 .vue 单文件组件
  2. 路由管理:集成 Vue Router 进行页面导航
  3. 状态管理:使用 Vuex/Pinia 管理全局状态
  4. UI 框架:采用 ElementPlus 提供丰富的 UI 组件
  5. 国际化:配置中文语言包
  6. 图标系统:全局注册图标组件库
相关推荐
iCxhust4 分钟前
在 emu8086 中可以直接编译运行的完整汇编程序,演示数组的定义、遍历、求和、求最大值。
开发语言·前端·javascript·汇编·单片机·嵌入式硬件·算法
JianZhen✓9 分钟前
2026前端高频面试题总结(Vue/JS/网络/Webpack/性能优化/手写)
前端·javascript·vue.js
贫民窟的勇敢爷们12 分钟前
Spring Boot+Vue电商系统开发实战:架构设计与核心实现
vue.js·spring boot·后端
里欧跑得慢12 分钟前
Flutter 主题管理:构建一致的用户界面
前端·css·flutter·web
龙猫里的小梅啊26 分钟前
CSS(八)CSS显示模式display属性
前端·css·css3
雨季mo浅忆29 分钟前
第二项目重新梳理
前端·面试
星光开发者30 分钟前
基于springboot电动汽车租赁管理系统-计算机毕设 附源码 11217
javascript·spring boot·mysql·django·php·html5·express
李白的天不白38 分钟前
webpack 与 vue-loader 版本冲突问题
前端·vue.js·webpack
sunneo43 分钟前
专栏D-团队与组织-05-冲突与决策
前端·人工智能·产品运营·aigc·产品经理·ai-native
空中海1 小时前
05 React Native架构设计、主线项目与专家实践
javascript·react native·react.js