• vue动态加载组件


    在工作中遇到这么一个需求,就是根据所选的数据,动态显示对应的组件。

    当时就不想引入import一堆的组件,想传入组件名就能显示组件,百度之后果然找到对应的方法,那就是require.context。

    由于涉及到业务,所以我就创建一个简单的demo,能看到怎么使用即可。先看一下项目结构,如图1所示。

    图1 目录结构图

    看一下index.js里的内容,代码如下:

    const resultComps = {}
    let requireComponent = require.context(
        './', // 在当前目录下查找
        false, // 不遍历子文件夹
        /.vue$/ // 正则匹配 以 .vue结尾的文件
      )
      requireComponent.keys().forEach(fileName => {
        let comp = requireComponent(fileName)
        resultComps[fileName.replace(/^./(.*).w+$/, '$1')] = comp.default
      })
      export default resultComps

    在需要引入组件的vue页面引入index.js,我以Appvue为例,代码如下:

    <template>
        <div id="app">
            <div style="line-height: 50px;">
                俺是父组件
            </div>
            <div>
                这是引入的子组件:
                <div style="line-height: 50px;border: 1px red solid;">
                    <component v-for="comp in comps" :key="comp.id" :is="allComps[comp]"></component>
                </div>
            </div>
            
        </div>
    </template>
    
    <script>
        import allComps from './components/index.js'
        export default {
            name: 'app',
            data() {
                return {
                    // 此处组件名即文件名
                    comps: ['demo1', 'demo2', 'demo3'],
                    allComps: allComps
                }
            }
        }
    </script>
    
    <style></style>

    效果如图2所示

    图2 演示图

       本篇到此就结束了

  • 相关阅读:
    css文档之盒模型阅读笔记
    《图解HTTP》阅读总结
    好博客-持续收藏中。。。
    Linux下Nagios的安装与配置
    在Linux上使用logwatch分析监控日志文件
    根据Request检测是否为移动端设备访问
    MyEclipse启动一直停留在Loading workbench界面上的处理
    使用JSONP进行跨域请求
    Page.java
    JsonUtil.java
  • 原文地址:https://www.cnblogs.com/yyzhiqiu/p/15085734.html
Copyright © 2020-2023  润新知