Title

1、 语法:let  webpacks = require.context (directory,useSubdirectories,regExp) 

  (directory:"文件路径",useSubdirectories:"布尔值",regExp:"正则表达式")

  // 返回值 是webpack实例 

2、require.context实例有两个方法: let list=webpacks .keys()   // 获取到每一个暴露的内容,数组结构         webpack('路径').default   // 获取到路径中导出的模块

3、作用:自动获取文件中的暴露内容

4、案例:自动注册全局组件,用户在 指定文件 ,只要创建一个.vue 然后创建成一个全局组件

//自动的方法
//  require.context('文件路径','布尔值','正则')

//语法:require.context('文件路径','布尔值','正则')

//这个实例有两个api  1、keys() =>文件路径 =》数组结构  2、webpack(文件路径).default 这个文件内容
//

function  getArrs(){
   let arrs = []
   let webpacks=   require.context('./',true,/\.vue/)
     console.log(webpacks.keys());

     webpacks.keys().forEach((item,index)=>{
        // ./BackTop.vue
        arrs.push({name:item.replace('./','').replace('.vue',''),com:webpacks(item).default})
     })

     return arrs
     
}

function obj(App){
    console.log(66666,App);

    //1 自动获取到 arrs 结构

   let comList =  getArrs()


   console.log(comList);

    comList.forEach((item)=>{
        App.component(item.name,item.com)
    })

}

export default obj

 5、案例2:在react脚手架中合并所有的redecer,并自动添加引入

//  合拼reducer
import {combineReducers} from 'redux'

// combineReducers
import CartReducer from './CartReducer'
import meReducer from './meReducer'
//这里的引入各自的reducer 引入 
//处理方法=》自动引入reducer,自动合拼reducer

 //1 在reducers文件夹下创建一个 redcuer 文件=》再 合拼成reducer

 // 1webpack  =》require.context =》自动获取到文件中的暴露内容
  
 //  语法:require.context('文件路径',布尔值,正则)
 // require.context('文件路径',布尔值,正则)  => 返回值是 webpack 实例方式

 // 两个方法  1  webf.keys() => ['文件路径','文件路径']
 //          2 获取到它的内容 webpack(路径).default
 let webf = require.context('./',true,/\.js/)
   let list = webf.keys()
   //删除 index.js
 let index =  list.findIndex((item,index)=>{
    return item=='./index.js'; // 找出自身文件,把它排除出去
   })

   list.splice(index,1)
   console.log(list);
// 问题 =》合并成一个对象
let objs = {}
     list.forEach((item,index)=>{  //文件路径  ./ CartReducer .js
          console.log(webf(item).default);
          //处理属性 = item

          //CartReducer .js =>CartReducer
          let items = item.replace('./','').replace('.js','')
          objs[items ] =webf(item).default      // // 获取到路径中导出的模块
   })
console.log( objs);
   

//作用:合拼reducer
//语法: let reducers = combineReducers({属性:各自的reducer,属性:各自的reducer})


let reducers = combineReducers( objs)

export default reducers

 

posted on 2023-01-06 12:28  chccee  阅读(784)  评论(0编辑  收藏  举报