美文网首页web前端
vue批量包含所有组件

vue批量包含所有组件

作者: 姜治宇 | 来源:发表于2020-06-10 11:16 被阅读0次

在一些大中型项目中,一个页面涉及的组件可能非常多,有些共有的组件单个引入的话,代码就显得非常冗余了,这时我们可以用批量引入的方式,一次性引入所有组件。
比如我在components文件夹下写了好多组件,其中有一个common文件夹下的组件,我希望所有页面都引入使用,怎么来做呢?

demo.png
可以使用require.context这个函数来搞定,这个函数的目的是递归一个文件夹,将所有文件都读出来,然后再配合forEach,将所有组件批量注册即可。
在components文件夹下新建index.js文件:
import Vue from "vue";

const requireComponents = require.context('./common', true, /\.vue/);
/*requireComponents:
webpackContext(req) {
    var id = webpackContextResolve(req);
    return __webpack_require__(id);
}
*/
// 遍历出每个组件的路径
requireComponents.keys().forEach(fileName => {
    // 组件实例
    const reqCom = requireComponents(fileName)
    // 截取路径作为组件名
    const reqComName = fileName.split('/')[1]
    console.log(reqComName)
    // 组件挂载
    Vue.component(reqComName, reqCom.default || reqCom)
})

common文件夹下的组件,应该保证文件名跟组件名是一致的:


22.png

publicHeader/publicHeader.vue:

<template>
  <div>
    <h3>这是共有头部</h3>
  </div>
</template>
<script>
export default {
  name: 'publicHeader'
}
</script>
<style scoped>
h3 {
  margin: 40px 0;
}
</style>

publicHeader/index.js:

import publicHeader from "./publicHeader.vue";
export default publicHeader;

然后我们需要在main.js引入:

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import axios from 'axios'
import ViewUI from 'view-design';
import 'view-design/dist/styles/iview.css';

import "@/components"; // 直接引入即可,不用指定名字

import store from './store'
Vue.config.productionTip = false;
Vue.prototype.$axios = axios;

Vue.use(ViewUI);

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

这样就可以在所有页面直接使用共有组件了。

相关文章

  • vue批量包含所有组件

    在一些大中型项目中,一个页面涉及的组件可能非常多,有些共有的组件单个引入的话,代码就显得非常冗余了,这时我们可以用...

  • pip和conda批量导出、安装组件(requirements.

    pip批量导出包含环境中所有组件的requirements.txt文件 pip批量安装requirements.t...

  • vue组件

    组件:局部功能界面,包含所有实现页面的所有资源HelloWorld.vue: App.vue: main.js:

  • Js 学习笔记

    Vue组件透传 $attrs包含了父组件传递的所有属性,通过v-bind可以将父组件所有属性绑定到子组件 $lis...

  • Vue基础-模版语法

    一.Vue组件 Vue组件包含template、script、style三个部分: template是Vue组件的...

  • conda 导出与导入requirements.txt

    conda批量导出包含环境中所有组件的requirements.txt文件 conda list -e > req...

  • Vue - 嵌套组件(Nested Component)

    eg:item.vue todo.vue todo.vue包含item组件为嵌套组件。

  • vue入门8---vue组件创建与使用、项目打包、eslint编

    一、Vue组件 定义:vue组件即一个界面的局部功能模块,它包含实现这个功能模块的所有资源,可能有html/css...

  • 12.混合模式 Mixin

    1 基础 混合是一种灵活的分布式复用 Vue 组件的方式。混合对象可以包含任意组件选项。以组件使用混合对象时,所有...

  • Vue插槽

    Vue 插槽 插槽用于向组件传递内容,插槽内可以包含任何模板代码,包括 HTML,甚至组件。如果 组件 没有包含一...

网友评论

    本文标题:vue批量包含所有组件

    本文链接:https://www.haomeiwen.com/subject/mmputktx.html