require.context
官方文檔指出
It allows you to pass in a directory to search, a flag indicating whether subdirectories should be searched too, and a regular expression to match files against.
意思是它允許你通過一個目錄進行搜索,flag指定是否搜索子目錄,以及與文件匹配的正則表達式丑孩。
也就是說 require.context 有三個參數(shù):
- directory:說明需要檢索的目錄
- useSubdirectories:是否檢索子目錄
- regExp: 匹配文件的正則表達式
examples:
require.context('./test', false, /\.test\.js$/);
context module API
官方文檔指出
A context module exports a (require) function that takes one argument: the request.
The exported function has 3 properties: resolve, keys, id.
resolve is a function and returns the module id of the parsed request.
keys is a function that returns an array of all possible requests that the context module can handle.
id is the module id of the context module. This may be useful for module.hot.accept
意思是該上下文到處一個必須的函數(shù),并且這個函數(shù)接受一個請求的參數(shù).
導出的函數(shù)有3個屬性:resolve呕乎、keys和id.
- resolve是一個函數(shù)捕犬,返回解析請求的模塊ID兑牡。
- keys是一個函數(shù)跨扮,返回上下文模塊可以處理的所有可能請求的數(shù)組.
- id是上下文模塊的模塊ID酱固。 這可能對module.hot.accept有用
var cache = {};
function importAll (r) {
r.keys().forEach(key => cache[key] = r(key));
}
importAll(require.context('../components/', true, /\.js$/));
例如導出當前目錄文件下的所有js文件并且不包含該index.js文件
首先創(chuàng)建兩個測試文件index.js和test.js
//index.js
var cache = {};
function importAll (r) {
r.keys().forEach(key => {
if(key === './index.js') return
cache[key] = r(key).defalut
});
}
importAll(require.context('.', false, /\.js$/));
console.log(cache) //可以看下cache現(xiàn)在是什么樣子
export default cache