最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何批量引入組件、注冊(cè)和使用詳解

 更新時(shí)間:2021年05月12日 12:47:50   作者:周小盜  
這篇文章主要給大家介紹了關(guān)于vue如何批量引入組件、注冊(cè)和使用的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

組件是我們非常常用的東西,很多人使用組件都是通過(guò)一個(gè)一個(gè)文件去引用和注冊(cè)。這篇文章就來(lái)介紹下vue批量引入組件、注冊(cè)和使用的方法。

一、使用場(chǎng)景

在日常開(kāi)發(fā)中,經(jīng)常會(huì)有這樣一種情況:

	import A from 'components/A'
	import B from 'components/B'
	import C from 'components/C'
	import D from 'components/D'

遇到這種重復(fù)的代碼,就在想,是否可以進(jìn)行以下優(yōu)化,一次性全部引入。于是就找到了webpack的api,通過(guò)調(diào)用require.context來(lái)進(jìn)行處理,具體代碼如下:

二、使用步驟

涉及到:

  • 組件名稱(chēng)為帶中橫線規(guī)范,最后要轉(zhuǎn)為駝峰命名法的功能;
  • component的is屬性;

具體詳解都在代碼中:

1.文件目錄

2.HTML代碼

<template>
  <div class="water-analysis">
    <div class="content-box" ref="contentbox">
      <a-tabs :default-active-key="activeComponent" @change="tabChangeHandle">
        <a-tab-pane
          v-for="item in tabList"
          :key="item.key"
          :tab="item.tab"
        ></a-tab-pane>
      </a-tabs>
      <div class="tab-pane-box">
      	<!-- 通過(guò)is屬性,綁定對(duì)應(yīng)的組件名稱(chēng),展示對(duì)應(yīng)的組件 -->
        <component :is="activeComponent"></component>
      </div>
    </div>
  </div>
</template>

3.js代碼

語(yǔ)法:require.context(directory, useSubdirectories, regExp)

  • directory: 要查找的文件路徑
  • useSubdirectories: 是否查找子目錄
  • regExp: 要匹配文件的正則

返回值:兩個(gè)方法一個(gè)屬性

  • keys(): 返回匹配成功模塊的名字組成的數(shù)組
  • resolve(): 接受一個(gè)參數(shù)request,request為test文件夾下面匹配文件的相對(duì)路徑,返回這個(gè)匹配文件相對(duì)于整個(gè)工程的相對(duì)路徑
  • id:執(zhí)行環(huán)境的id,返回的是一個(gè)字符串,主要用在module.hot.accept,應(yīng)該是熱加載
<script>
// 中橫線轉(zhuǎn)駝峰
var camelCase = function (s) {
  return s.replace(/-\w/g, function (x) {
    return x.slice(1).toUpperCase();
  });
};
// 批量引入子組件  重點(diǎn),語(yǔ)法見(jiàn)上
const allComponents = require.context("./comp", false, /\.vue$/);

console.log(allComponents.keys())
// ["./tem-a.vue", "./tem-b.vue", "./tem-c.vue", "./tem-d.vue"]

console.log(allComponents.id)
//./src/views/tempManage/comp sync \.vue$

//制作組件數(shù)組,在下方components中注冊(cè)使用
let resComponents = {};
allComponents.keys().forEach(comName => {
  let name = camelCase(comName);
  const comp = allComponents(comName);
  resComponents[name.replace(/^\.\/(.*)\.\w+$/, "$1")] = comp.default;
});

export default {
  name: "WaterQuery",
  components: resComponents,
  data() {
    return {
      activeComponent: "temA",
      tabList: [
        {
          key: "temA",
          tab: "A組件",
        },
        {
          key: "temB",
          tab: "B組件",
        },
        {
          key: "temC",
          tab: "C組件",
        },
        {
          key: "temD",
          tab: "D組件",
        },
      ],
    };
  },
  created() {
    if (this.$route.query["val"]) {
      this.activeComponent = this.$route.query["val"];
    }
  },
  methods: {
    // 切換tab欄
    tabChangeHandle(val) {
      const {path} = this.$router;

      this.$router.push({
        path,
        query: {val},
      });
      this.activeComponent = val;
    },
  },
};
</script>

4.css代碼(可不看,寫(xiě)出來(lái)只是為了代碼完整性,拿來(lái)可以直接運(yùn)行展示)

<style scoped>
.water-analysis {
  height: 100%;
  overflow: auto;
}
.content-box {
  height: 100%;
}
.tab-pane-box {
  height: calc(100% - 62px);
}
</style>

三、總結(jié)

到此這篇關(guān)于vue如何批量引入組件、注冊(cè)和使用的文章就介紹到這了,更多相關(guān)vue批量引入組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解Unity webgl 嵌入Vue實(shí)現(xiàn)過(guò)程

    詳解Unity webgl 嵌入Vue實(shí)現(xiàn)過(guò)程

    Unity webgl嵌入到前端網(wǎng)頁(yè)中,前端通過(guò)調(diào)用Unity webgl內(nèi)方法實(shí)現(xiàn)需要展示的功能,前端點(diǎn)擊Unity webgl內(nèi)的交互點(diǎn),Unity webgl返回給前端一些需要的數(shù)據(jù),這篇文章主要介紹了Unity webgl 嵌入Vue實(shí)現(xiàn)過(guò)程,需要的朋友可以參考下
    2024-01-01
  • Vue.js 表單校驗(yàn)插件

    Vue.js 表單校驗(yàn)插件

    這篇文章主要介紹了Vue.js 表單校驗(yàn)插件的相關(guān)資料,需要的朋友可以參考下
    2016-08-08
  • vue中el-autocomplete與el-select的異同

    vue中el-autocomplete與el-select的異同

    本文主要介紹了vue中el-autocomplete與el-select的異同,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 一篇文章教會(huì)你部署vue項(xiàng)目到docker

    一篇文章教會(huì)你部署vue項(xiàng)目到docker

    在前端開(kāi)發(fā)中,部署項(xiàng)目是我們經(jīng)常發(fā)生的事情,下面這篇文章主要給大家介紹了關(guān)于部署vue項(xiàng)目到docker的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • vue.js如何處理數(shù)組對(duì)象中某個(gè)字段是否變?yōu)閮蓚€(gè)字段

    vue.js如何處理數(shù)組對(duì)象中某個(gè)字段是否變?yōu)閮蓚€(gè)字段

    這篇文章主要介紹了vue.js如何處理數(shù)組對(duì)象中某個(gè)字段是否變?yōu)閮蓚€(gè)字段方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • vue2單元測(cè)試環(huán)境搭建

    vue2單元測(cè)試環(huán)境搭建

    本篇文章給大家分享了vue2單元測(cè)試環(huán)境搭建的詳細(xì)步驟,對(duì)此有需要的朋友參考學(xué)習(xí)下。
    2018-05-05
  • vue+axios+java實(shí)現(xiàn)文件上傳功能

    vue+axios+java實(shí)現(xiàn)文件上傳功能

    這篇文章主要為大家詳細(xì)介紹了vue+axios+java實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Vue.js中使用道具方法demo

    Vue.js中使用道具方法demo

    這篇文章主要為大家介紹了Vue.js中使用道具方法demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • vue?調(diào)用瀏覽器攝像頭實(shí)現(xiàn)及原理解析

    vue?調(diào)用瀏覽器攝像頭實(shí)現(xiàn)及原理解析

    這篇文章主要為大家介紹了vue調(diào)用瀏覽器攝像頭實(shí)現(xiàn)及原理解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • 一篇文章帶你吃透Vue生命周期(結(jié)合案例通俗易懂)

    一篇文章帶你吃透Vue生命周期(結(jié)合案例通俗易懂)

    這篇文章主要給大家介紹了關(guān)于如何通過(guò)一篇文章帶你吃透Vue生命周期,文章通過(guò)結(jié)合案例更加的通俗易懂,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-02-02

最新評(píng)論

台南县| 金堂县| 高雄县| 舞阳县| 仁怀市| 藁城市| 泽普县| 屏东市| 蛟河市| 景东| 文成县| 章丘市| 瑞昌市| 玉田县| 景东| 买车| 恩平市| 凤城市| 南乐县| 航空| 铜梁县| 应用必备| 庆阳市| 晋江市| 潜江市| 敦煌市| 贡觉县| 吉木萨尔县| 宁乡县| 仙游县| 乐都县| 泽普县| 洪江市| 崇义县| 襄城县| 四平市| 治多县| 无棣县| 黑龙江省| 淳安县| 新和县|