Vue 应用里 main.js 的作用

简介: Vue 应用里 main.js 的作用

在Vue应用中,main.js文件扮演着至关重要的角色,它是整个Vue应用的入口文件。main.js负责初始化Vue应用实例、加载全局配置、注册全局组件、引入插件以及挂载Vue实例到DOM上。通过main.js,我们可以配置Vue应用的各种选项、引入需要的库或者插件,以及进行一些全局的初始化操作。下面我将详细介绍main.js的作用和使用场合,并结合示例进行说明。


作用

1. 创建Vue实例

main.js的主要作用之一是创建Vue应用实例。在这里,我们可以通过new Vue({...})来配置Vue实例的选项,包括eldatamethodscomputed等等,以及引入需要的插件或者Vue组件。

2. 加载全局配置

main.js也负责加载全局配置,例如路由器(Vue Router)、状态管理器(Vuex)等。这些全局配置可以让我们在整个应用中共享状态和逻辑,方便管理和维护。

3. 注册全局组件

main.js中,我们可以注册全局组件,这样在整个应用中都可以使用这些组件,而不需要在每个组件中单独引入注册。这种方式可以提高代码复用性,减少重复代码量。

4. 引入插件

通过main.js,我们可以引入各种插件,例如axios用于HTTP请求、element-ui用于UI组件库等。这些插件可以为我们的应用提供额外的功能和特性,使得开发更加便捷和高效。

5. 挂载Vue实例到DOM

最后,main.js负责将Vue实例挂载到HTML的DOM元素上,通常是通过指定el选项来指定挂载的DOM元素。这样一来,Vue应用就可以在指定的DOM元素内部进行渲染和交互。

使用场合

1. 创建Vue实例

main.js中,我们可以创建Vue应用实例,并指定根组件,例如:

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`new` Vue({
  render: `h => h`(App)
}).$mount(`#app`);

这里我们引入了根组件App.vue,并将其渲染到#app的DOM元素上。

2. 加载全局配置

我们可以在main.js中加载全局配置,例如Vue Router和Vuex,以便在整个应用中共享状态和路由管理。示例如下:

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` router `from` './router';
`import` store `from` './store';
`new` Vue({
  router,
  store,
  render: `h => h`(App)
}).$mount(`#app`);
3. 注册全局组件

通过Vue.component方法,我们可以在main.js中注册全局组件,以便在整个应用中都可以使用。示例如下:

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` MyComponent `from` './components/MyComponent.vue';
Vue.component('my-component', MyComponent);
`new` Vue({
  render: `h => h`(App)
}).$mount(`#app`);
4. 引入插件

main.js中,我们可以引入各种插件,例如axios用于HTTP请求、element-ui用于UI组件库等。示例如下:

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` axios `from` 'axios';
Vue.prototype.$http = axios;
`new` Vue({
  render: `h => h`(App)
}).$mount(`#app`);
5. 挂载Vue实例到DOM

最后,在main.js中,我们需要将Vue实例挂载到HTML的DOM元素上,通常是通过指定el选项来指定挂载的DOM元素。示例如下:

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`new` Vue({
  el: `#app`,
  render: `h => h`(App)
});

这样就完成了Vue应用的初始化和挂载。

示例

为了更好地理解main.js的作用和使用场合,我们来看一个完整的示例。假设我们有一个简单的Vue应用,包含一个计数器组件和一个显示当前时间的组件。我们将使用Vue Router进行路由管理,Vuex进行状态管理。

1. 创建Vue实例
`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` router `from` './router';
`import` store `from` './store';
`new` Vue({
  router,
  store,
  render: `h => h`(App)
}).$mount(`#app`);
2. 加载全局配置
// router.js
`import` Vue `from` 'vue';
`import` Router `from` 'vue-router';
`import` Home `from` './views/Home.vue';
`import` About `from` './views/About.vue';
Vue.use(Router);
`export` default `new` Router({
  routes: [
    {
      path: '/',
      name: 'Home',
      component: Home
    },
    {
      path: '/about',
      name: 'About',
      component: About
    }
  ]
});
// store.js
`import` Vue `from` 'vue';
`import` Vuex `from` 'vuex';
Vue.use(Vuex);
`export` default `new` Vuex.Store({
  state: {
    count: 0
  },
  mutations: {
    increment(state) {
      state.count++;
    }
  }
});
3.

注册全局组件

`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` MyCounter `from` './components/MyCounter.vue';
`import` Clock `from` './components/Clock.vue';
Vue.component('my-counter', MyCounter);
Vue.component('clock', Clock);
`new` Vue({
  render: `h => h`(App)
}).$mount(`#app`);
4. 引入插件
`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`import` axios `from` 'axios';
Vue.prototype.$http = axios;
`new` Vue({
  render: `h => h`(App)
}).$mount(`#app`);
5. 挂载Vue实例到DOM
`import` Vue `from` 'vue';
`import` App `from` './App.vue';
`new` Vue({
  el: `#app`,
  render: `h => h`(App)
});

以上就是一个简单的Vue应用示例,通过main.js文件的配置,我们实现了Vue实例的初始化、全局配置的加载、全局组件的注册、插件的引入以及Vue实例的挂载,从而构建起了一个完整的Vue应用。main.js作为入口文件,承载了初始化和配置的重要任务,是Vue应用中不可或缺的一部分。

相关文章
|
3天前
|
JavaScript
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
8 0
|
4天前
|
JavaScript
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
```markdown # CAD网页编程概览 - 使用mxcad库,实现CAD操作如删除、复制、镜像、移动和旋转。 - `erase()`方法删除实体,`clone()`配合`transformBy()`用于复制和编辑。 - `mirror()`和`transformBy(setMirror)`执行镜像操作,基于参考线。 - `move()`和`transformBy(setToTranslation)`实现移动功能。 - `rotate()`和`transformBy(setToRotation)`进行旋转,支持角度输入。 ```
网页CAD(JS Vue 预览dwg)如何二次开发常用的CAD编辑功能
|
3天前
|
JSON JavaScript 数据格式
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
vue 绘制波形图 wavesurfer.js (音频/视频) 【实用教程】
17 3
|
5天前
|
JavaScript 前端开发 容器
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
vue组件封装——固定宽高比的容器(2种方法:纯CSS实现 + JS实现)
9 2
|
5天前
|
JavaScript
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
10 2
|
5天前
|
运维 JavaScript 前端开发
前端 JS 经典:vue 开发中的 base 和 publicPath
前端 JS 经典:vue 开发中的 base 和 publicPath
12 1
|
5天前
|
JavaScript 前端开发
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
vue 模拟随机变速的动态打字特效【支持多行文本】(含css实现闪烁光标,js动态改变setInterval定时器的时间间隔)
10 1
|
5天前
|
JavaScript
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
vue + d3.js(v6) 绘制【树状图/思维导图】可折叠/展开,可点击跳转,可带标签
19 1
|
1天前
|
JavaScript API
若依没解构送post请求出现的bug,vue.runtime.esm.js:620 [Vue warn]: Error in mounted hook: “TypeError: (0 , _inde
若依没解构送post请求出现的bug,vue.runtime.esm.js:620 [Vue warn]: Error in mounted hook: “TypeError: (0 , _inde
|
2天前
|
JavaScript
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
vue 农历日期转公历日期(含插件 js-calendar-converter 使用教程)
4 0