Sivo 悉见

Vue全局组件注册方法

匿名 · 更新于 2020/4/22

TypeScript模式注册全局组件
第1步、先创建一个全局组件,例如Nav.vue

<template>
  <div>
    <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link> 
  </div>
</template>

<script> export default {   name: 'Nav' } </script>

第2步、在main.ts中注册该组件为全局组件
import Vue from 'vue'
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'
import Nav from './components/Nav.vue' //引入Nav组件

new Vue({   router,   store,   render: h => h(App) }).$mount('#app')

Vue.component('Nav', Nav) //注册Nav组件为全局组件


 第3步、在组件中调用引入子组件<Nav></Nav>即可

注意事项:此方案的正常实现,必须要求路由采用懒加载方式,否则刷新页面可能会导致全局组件无法生效,懒加载路由方式示例如下:
import Vue from 'vue'
import VueRouter, { RouteConfig } from 'vue-router'
const Home = () => import(/* webpackChunkName: "home" */ '../views/Home.vue')

Vue.use(VueRouter)

const routes: Array<RouteConfig> = [   {     path: '/',     name: 'Home',     component: Home   } ]

const router = new VueRouter({   mode: 'history',   base: process.env.BASE_URL,   routes })

export default router