1. 程式人生 > >webpack 之 require.context 用法

webpack 之 require.context 用法

    最近專案中用到了vue-element-admin當作框架,當中有一個很好的例子:封裝了一個svg的元件,其中就是用到了require.context,然後就出查了相關的介紹,當時也是一頭霧水,最後決定弄明白這個東西。

  | 看下webpack官方的介紹:

require.context 點選開啟連結

You can create your own context with the require.context() function.

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.

webpack parses for require.context() in the code while building.

The syntax is as follows:

require.context(directory, useSubdirectories = false, regExp = /^\.\//)

Examples:

require.context("./test", false, /\.test\.js$/);
// a context with files from the test directory that can be required with a request endings with `.test.js`.
require.context("../", true, /\.stories\.js$/);
// a context with all files in the parent folder and descending folders ending with `.stories.js

    啥意思呢,就是說啊,這玩意的目的啊就是為了省事,通常我們可能會在多個頁面require 同一個元件,數量少還行,多了的話就很蠻煩,維護起來也費勁。這個時候require.context 就排上用場了,一次性引入。

   | 首先介紹下入參 :

        1. 你要引入檔案的目錄

        2.是否要查詢該目錄下的子級目錄

        3.匹配要引入的檔案

   | 返回的:

       1. context.require 返回一個require 函式:

function webpackContext(req) {
	return __webpack_require__(webpackContextResolve(req));
}

    2. 改函式有三個屬性:resolve 、keys、id

        · resolve: 是一個函式,他返回的是被解析模組的id

        · keys: 也是一個函式,他返回的是一個數組,該陣列是由所有可能被上下文模組解析的請求物件組成

        · id:上下文模組的id

    | 用法:

拿該目錄為例

         

           要引入svg下面所有的svg檔案:

            在該檔案(icons)目錄下新建一個js檔案index.js 寫如下程式碼:

let requireAll = requireContext => requireContext.keys().map(requireContext)
let req = require.context('./svg', false, /\.svg$/)
requireAll(req)
我們只需要將改index.js 引入,就可以將svg目錄下所有的svg檔案都引入到專案中了。

相關推薦

webpack require.context 用法

    最近專案中用到了vue-element-admin當作框架,當中有一個很好的例子:封裝了一個svg的元件,其中就是用到了require.context,然後就出查了相關的介紹,當時也是一頭霧水,最後決定弄明白這個東西。  | 看下webpack官方的介紹:requir

webpackrequire.context() 簡化你的程式碼

隨著我們的專案越來越大,平時的常見用操作就會覺得很‘麻煩’了,比如每次要新增新的路由, vuex裡面新增新的module等 { name: 'moduleN', component ModuleN, path: '/moduleN', } 麻煩嗎?談不上吧,畢竟我們之前一直都

webpackrequire.context的使用

概述 You can create your own context with the require.context() function. It allows you to pass in a directory to search, a flag indica

vuerequire.context

初識require.context require.context是webpack中,用來建立自己的(模組)上下文 webpack會在構建的時候解析程式碼中的require.context() require.context函式接收三個引數: 要搜尋的資料夾目錄

webpack require context 說明

使用 require.context 可以動態引入檔案。參考官方文件,但是文件中的表述不甚清晰,因此我整理了幾種用法和結果。 先新建一個測試目錄,安裝 webpack。目錄結構如下: 使用 require 完全使用變數 require(variable) 程式碼如下: co

Webpack“多頁面開發”最佳實戰

初始 local warn func ron 列表 大小 turn one 前言:相信之前看過這篇文章,前端構建工具之“Webpack”的朋友,對於Webpack有了一定的了解。那麽今天就跟大家分享下:如何利用webpack,來進行多頁面項目實戰開發

Git 系列tag的用法---為你的代碼標記版本號

嘗試 自動生成 tag lib 去掉 現在 blank title checkout 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 目錄(?)[-] 本地倉庫操作 遠程倉庫操作 其他 tag 操作 在做app開發的時候經常有版本的概念,比如v1

jquery $.fn的用法示例

click 成員函數 turn 靜態 extend pro .proto prototype query $.fn是指jquery的命名空間,加上fn上的方法及屬性,會對jquery實例每一個有效。 若擴展$.fn.abc(),即$.fn.abc()是對jquery擴展一個

webpackpostcss集成

brush style 生產 pre chrom 管理 gin test class 項目 為了 兼容各個瀏覽器,需要加各種 c3前綴,如果手動的加肯定 相對比較麻煩,但是現在有webpack,gulp之類的 工具可以自動給我們加上,可以說效率上加速不少。如果 配置中 做個

webpack resolve.alias(別名)

指定 lang 離開 one class public rom code try module.exports = { entry: ‘./src/main.js‘, output: { path: path.resolve(__dirname,

MySqlALTER命令用法詳細解讀(轉)

修改表 pre const 命令使用 add ear 修改 blog rain 本文詳細解讀了MySql語法中Alter命令的用法,這是一個用法比較多的語法,而且功能還是很強大的。 USE learning;(自己要提前建好) CREATE TABLE student

Linux基礎常見命令用法(一)

linux基礎命令入門(一)一、Linux文件目錄結構 在講述之前,先簡短的說說Windows文件結構,打開‘計算機’,看到的一個個的驅動器(盤符,例C盤、D盤等),點開其中任意盤符,看到的是一個個文件或文件夾,繼續打開...,每個盤都有自己的根目錄。若是把其打開過程畫下來,便可得到如下多棵倒樹並列的圖

Spring Boot參考教程(五)Spring Boot配置使用配置類用法

expr web程序 成功 驗證 pan hub parameter lan fix 4.2. SpringBoot配置使用之配置類使用 Spring Boot的大部分自動配置都可以滿足應用要求,但如果想精確的控制應用,或者想覆蓋自動配置,使用配置類是另一種很好的選擇,強調

C++const_cast常見用法

href ase lan val das weibo tls ipp ops ls71kr餃瓷幽透蓖茲http://shufang.docin.com/sina_6341788483gclx8t思煙遲謔爸捌http://jz.docin.com/zsoy17419hcqm蛻

Vueclass的用法

隱藏 htm ... cti mob scrip head span 使用總結 Vue中class的使用總結如下: 使用形式v-bind:class 簡寫:class 1.在數組中使用一個class <!DOCTYPE html> <html la

webpacksource map

mil 例子 extc 嘗試 -1 fun document filename 混亂 先來一個webpack小例子,項目結構如下: // greeter.js module.exports = function() { var greet = document.

JavaScript模塊化編程require.js與sea.js

新的 fin 可能 關鍵字 個數 們的 文件 頁面 停止 個人傾向於require.js AMD 是 RequireJS 在推廣過程中對模塊定義的規範化產出。CMD 是 SeaJS 在推廣過程中對模塊定義的規範化產出。類似的還有 CommonJS Modules/2.

Java函數Split的用法

java 基礎 最近在寫課程設計,需要用到將輸入的用逗號分割的整數字符串轉換成數組進行排序,所以就發現了這個在我看來簡直超神的函數: stringObj.split(String regex,int limit) 其中StringObj表示需要分割的字符串對象,且使用split方法後該對象不會被改變

webpackDefinePlugin使用

brush 全局 相關 數據 scrip http 分享圖片 配置 pack   DefinePlugin是webpack註入全局變量的插件,通常使用該插件來判別代碼運行的環境變量。在使用該插件需要註意的是,如果在該插件配置了相關的參數,必須要源碼中使用,webpack才會

opensuse軟件安裝zypper常見用法

pen .com 安裝 use open targe gpo arch www https://www.cnblogs.com/xiangzi888/archive/2012/03/10/2388597.htmlopensuse軟件安裝之zypper常見用法