使用require.context实现前端工程自动化

90 篇文章 14 订阅
10 篇文章 0 订阅

require.context介绍

require.context是一个webpack的api,通过执行require.context函数获取一个特定的上下文,主要用来实现自动化导入模块,在前端工程中,如果遇到从一个文件夹引入很多模块的情况,可以使用这个api,它会遍历文件夹中的指定文件,然后自动导入,使得不需要每次显式的调用import导入模块

require.context使用场景:

在这里插入图片描述

在Vue写的项目中,我把路由通过不同的功能划分成不同的模块,在index.js中一个个导入(原谅ide的警告-.-),但是如果项目变大了之后,每次手动import会显得有些力不从心,这里可以使用require.context函数遍历modules文件夹的所有文件一次性导入到index.js中

require.context介绍

require.context函数接受三个参数

  • directory {String} -读取文件的路径
  • useSubdirectories {Boolean} -是否遍历文件的子目录
  • regExp {RegExp} -匹配文件的正则

require.context实例演示

在这里插入图片描述

main.js代码:

const path = require('path')
const requireComponent = require.context('@/views/components', false, /\.vue$/)
//此处配置 webpack的简洁路径@为src,所以路径为src//views/components
requireComponent
  .keys()
  .reverse()
  .forEach(filename => {
    const componentConfig = requireComponent(filename)
    const componentName = path.basename(filename, '.vue')
    // 全局注册组件
    Vue.component(
      componentName,
      // 如果这个组件选项是通过 `export default` 导出的,
      // 那么就会优先使用 `.default`,
      // 否则回退到使用模块的根。
      componentConfig.default || componentConfig
    )
  })

简洁路径配置:

普通webpack(webpack.config.base.js)

  resolve: {
    modules: ['node_modules'],
    extensions: ['.css', '.less', '.scss', '.js', '.vue', '.json'],
    alias: {
      '~': process.cwd(),
      '@': path.join(process.cwd(), 'src'),
      vue: 'vue/dist/vue.common.js',
      buildPath: buildPath,
    },
  },

vue-cli3配置的(vue.config.js)

  configureWebpack: {
    resolve: {
      alias: {
        '@': resolve('src'),
        '~': process.cwd()
      }
    }
  },

在项目中使用
在这里插入图片描述

代码:

  <div
    v-for="(n, index) in 9"
    :key="`phone_${index}`"
    :class="`page${index}`"
    class="page"
  >
    <component
      :is="`Page${index}`"
      :current="currentPage"
      :baigei="baigeiData"
    >
    </component>
  </div>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值