利用 webpack 的 require.context 自動注冊 vue 全局組件

webpack 的 require.context 函數(shù)可以用來創(chuàng)建自己的 context续镇。webpack 會在構建中解析代碼中的 require.context()

require.context('./test', false, /\.test\.js$/);
//(創(chuàng)建出)一個 context呼奢,其中文件來自 test 目錄确买,request 以 `.test.js` 結(jié)尾右犹。

這行代碼會去當前目錄下的 test 文件夾 (不包括子目錄) 下找所有以.test.js結(jié)尾的能被 require 的文件丹擎。
更直白地說就是,我們可以通過正則匹配引入相應的文件模塊镰踏。

require.context 方法有三個參數(shù):

  • directory:要檢索的目錄
  • useSubdirectories:是否檢索子目錄函筋,默認是 true
  • regExp:匹配文件的正則表達式

正文開始:

  1. 我們先創(chuàng)建一個 GlobalComs 目錄,里面放需要注冊到全局的組件奠伪。建議只包含經(jīng)常使用且體積不大的組件跌帐,不然打包出來的初始 js 太大就不好了。


  2. 給組件提供name绊率,不然注冊時就采用.vue文件的文件名命名

    UploadSingle 組件

  3. 在 GlobalComs 目錄下新建一個index.js文件:

import Vue from 'vue'
// 自動注冊全局組件
function registerAllComponents(requireContext) {
  return requireContext.keys().forEach(comp => {
    const vueComp = requireContext(comp)
    // default.name 就是我們 .vue 組件導出的 name
    // 這塊邏輯需要根據(jù)自己的命名習慣去調(diào)整
    const compName = vueComp.default.name ? vueComp.default.name : /\/([\w-]+)\.vue$/.exec(comp)[1]
    Vue.component(compName, vueComp.default)
  })
}

// 注冊當前目錄下的所有 .vue 文件谨敛,包括子目錄
registerAllComponents(require.context('./', true, /\.vue$/))
  1. src/main.js導入這個文件即可:
// 自動注冊全局組件
import './components/GlobalComs'
  1. 可以在任意模版中愉快地直接使用了:
<template>
  <div class="app-container">
    ...
    <pagination
      v-show="total > 0"
      :total="total"
      :page.sync="queryInfo.page"
      :limit.sync="queryInfo.pageSize"
      @pagination="fetchData"
    />
    <el-dialog>
      <upload-single v-model="newIslander.photoSrc" drag />
    </el-dialog>
    ...
  </div>
</template>

完事兒~

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市滤否,隨后出現(xiàn)的幾起案子脸狸,更是在濱河造成了極大的恐慌,老刑警劉巖藐俺,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件炊甲,死亡現(xiàn)場離奇詭異泥彤,居然都是意外死亡,警方通過查閱死者的電腦和手機卿啡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門吟吝,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人牵囤,你說我怎么就攤上這事爸黄。” “怎么了揭鳞?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵炕贵,是天一觀的道長。 經(jīng)常有香客問我野崇,道長称开,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任乓梨,我火速辦了婚禮鳖轰,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘扶镀。我一直安慰自己蕴侣,他們只是感情好,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布臭觉。 她就那樣靜靜地躺著昆雀,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蝠筑。 梳的紋絲不亂的頭發(fā)上狞膘,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天,我揣著相機與錄音什乙,去河邊找鬼挽封。 笑死,一個胖子當著我的面吹牛臣镣,可吹牛的內(nèi)容都是我干的辅愿。 我是一名探鬼主播,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼忆某,長吁一口氣:“原來是場噩夢啊……” “哼渠缕!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起褒繁,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎馍忽,沒想到半個月后棒坏,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體燕差,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年坝冕,在試婚紗的時候發(fā)現(xiàn)自己被綠了徒探。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡喂窟,死狀恐怖测暗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情磨澡,我是刑警寧澤碗啄,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站稳摄,受9級特大地震影響稚字,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜厦酬,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一胆描、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧仗阅,春花似錦昌讲、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至旋廷,卻和暖如春鸠按,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背饶碘。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工目尖, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扎运。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓瑟曲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親豪治。 傳聞我的和親對象是個殘疾皇子洞拨,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容