hgq's docs
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)

guoguoqiqi

漫不经心的向往
主页
ES6-阮一峰 (opens new window)
Vue文档 (opens new window)
Axios文档 (opens new window)
Vue Router (opens new window)
Vuex文档 (opens new window)
面试题-Vue (opens new window)
面试题-JS (opens new window)
  • Vue 生命周期
  • v-model 的原理
  • Vue 组件间通信有哪几种方式
  • v-for给每一项加个key的作用
  • v-if与v-show的区别
  • computed 和 watch 的区别
  • 对 SPA 单页面的理解,它的优缺点分别是什么
  • 为什么不建议v-if和v-for一起使用
  • Vue的内置指令
  • MVVM的理解
  • keep-alive 的了解
  • Vue身上set方法的实现原理,为什么能实现视图的更新
  • mixin的用法
  • Vuex 为什么要分模块并且加命名空间
  • vue-router 路由钩子函数是什么 执行顺序是什么
  • Vuex 页面刷新数据丢失怎么解决
  • vue-router的hash和history模式
  • vue-router 路由模式有几种
  • vue-router 中常用的 hash 和 history 路由模式实现原理
  • 动态绑定Class和Style
  • 服务端渲染SSR
  • 对Diff算法的认识
  • 对虚拟DOM的认识
  • 在组件上使用v-model
  • 路由有哪几种导航守卫
  • 在哪个生命周期内调用异步请求
  • 怎么理解Vue中的单向数据流
  • 组件中 data 为什么是一个函数
  • 通过数组下标或者长度无法触发更新
  • 路由懒加载是什么意思
  • 父组件监听子组件的生命周期
  • 父子组件生命周期钩子函数执行顺序
  • Vue项目的SEO优化
  • Vue项目的优化
  • Vue2的响应式原理的基本实现
  • Vue2和Vue3的响应式原理的区别
  • axios简单配置
  • Vuex的使用
  • 相关面试题集合
  • 对函数式组件的认识
  • Vue extend 作用和原理
  • 自定义指令的使用
  • 模板编译的原理
  • Vue是怎样进行依赖收集的
  • Vue生命周期钩子是如何实现的
  • 说明nextTick的原理
  • 请描述组件的渲染流程
  • Vue的普通Slot以及作用域Slot的区别
  • Vue use方法的作用及原理
  • Vue中的修饰符
  • Vue如何兼容ie的问题
  • Vue中style标签的scoped的作用及原理
  • Vue路由传参数
  • Vue事件绑定原理
  • 如何设计一个比较友好的Header组件
  • Vue-router守卫
  • scoped样式穿透
  • Vue是如何重写数组的方法的
  • scoped的情况下无法修改element的样式问题
  • 修改element ui的样式
  • 强制刷新组件的方式有哪些
  • vue组件的设计原则
  • 一个组件的渲染流程
  • 默认插槽、具名插槽和作用域插槽
  • Vue组件的name的作用
  • 为什么Vue被称为“渐进框架”
  • 怎么做Vue项目的SEO优化
  • vue推荐的风格指南
  • 如何重置data
  • vuex中actions和mutations有什么区别
  • 说说你对vue的错误处理的了解
  • 说一说递归组件
  • 对于vue双向数据绑定的理解
  • 说一说vue中template模板的编译过程
  • 说一说nextTick的作用
  • Vue为何采用异步渲染
  • vue-router有几种钩子函数?具体是什么及执行流程是怎样的
  • vue中mixin各个选项的合并策略
  • vue中一个组件模板为什么只能由一个根元素
  • vue中的watch和created哪个先执行
  • vue中编辑页面如果判断是否编辑过并在离开时提示保存
  • vue修饰符sync的作用及原理
  • vue中如何批量引入组件
    • vue使用axios如何取消请求
    • vue项目如何实现国际化(多语言)
    • vue中定义全局方法有哪几种方式
    • 跟keep-alive组件相关的生命周期钩子有哪些
    • 如何响应路由参数变化
    • vue中父子组件生命周期的执行顺序
    • 内置组件keep-alive的实现原理
    • mixins和extends的使用及区别
    • vue自定义指令
    • vue的事件绑定原理
    • vue权限控制一般怎么做
    • vue的动态路由怎么配置使用
    • vuex数据持久化怎么做
    • Vue
    guoguoqiqi
    2022-03-15

    vue中如何批量引入组件

    # 1. 全局批量引入

    创建一个.js文件,并在main.js中引入即可。

    import Vue from "vue"
    import upperFirst from "lodash/upperFirst"
    import camelCase from "lodash/camelCase"
    const requireComponent = require.context(
        './', //组件所在目录的相对路径
        false, //是否查询其子目录
        /Base[A-Z]\w+\.(vue|js)$/ //匹配基础组件文件名的正则表达式
    )
    requireComponent.keys().forEach(fileName=>{
        // 获取文件名
        var names = fileName.split("/").pop().replace(/\.\w+$/,"");//BaseBtn
        // 获取组件配置
        const componentConfig = requireComponent(fileName);
        // 若该组件是通过"export default"导出的,优先使用".default",
        // 否则退回到使用模块的根
        Vue.component(names,componentConfig.default || componentConfig);
    })
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17

    # 2. 局部批量引入

    <template>
        <div>
            <component v-bind:is="isWhich"></component>
        </div>
    </template>
    <script>
    // 引入所有需要的动态组件
    const requireComponent = require.context(
      "./", //组件所在目录的相对路径
      true, //是否查询其子目录
      /\w+\.vue$/ //匹配基础组件文件名的正则表达式
    );
    var comObj = {};
    requireComponent.keys().forEach(fileName => {
      // 获取文件名
      var names = fileName
        .split("/")
        .pop()
        .replace(/\.\w+$/, "");
      // 获取组件配置
      const componentConfig = requireComponent(fileName);
      // 若该组件是通过"export default"导出的,优先使用".default",否则退回到使用模块的根
      comObj[names] = componentConfig.default || componentConfig;
    });
    export default {
      data() {
        return {
            isWhich: ""
        }
      },
      mounted() {},
      components: comObj
    };
    </script>
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34

    # 3. 动态组件使用方法

    <keep-alive>
        <component :is="isWhich"></component>
    </keep-alive>
    
    1
    2
    3

    使用标签保存状态,即切换组件再次回来依然是原来的样子,页面不会刷新,若不需要可以去掉。

    通过事件改变is绑定的isWhich值即可切换成不同的组件,isWhich的值为组件名称。

    ← vue修饰符sync的作用及原理 vue使用axios如何取消请求→

    最近更新
    01
    vuex数据持久化怎么做
    05-22
    02
    vue的动态路由怎么配置使用
    05-22
    03
    vue权限控制一般怎么做
    05-22
    更多文章>
    Theme by Vdoing | Copyright © 2022-2022 Guoquoqiqi | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式