亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Vue自動(dòng)化注冊(cè)全局組件腳本分享

 更新時(shí)間:2022年03月30日 15:14:09   作者:興趣使然的Geek  
這篇文章主要介紹了Vue自動(dòng)化注冊(cè)全局組件腳本,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

自動(dòng)化注冊(cè)全局組件

今天有一個(gè)idea,vue一些組件,可能會(huì)全局都用到,我覺(jué)得在main.js寫(xiě)

Vue.component(name, instance)

然后很命令式,寫(xiě)著也不好看,想著能夠有一個(gè)函數(shù)可以指定加載比如components下的文件,自動(dòng)完成全局化注冊(cè),想起來(lái)就很帥

放代碼

export function autoLoadingGlobalComponent() {
? const requireComponent = require.context(
? ? // 其組件目錄的相對(duì)路徑
? ? '../components',
? ? // 是否查詢其子目錄
? ? false,
? ? // 匹配vue后綴文件名的文件
? ? /\.vue$/
? )
? // 遍歷獲取到的文件名,依次進(jìn)行全局注冊(cè)
? requireComponent.keys().forEach(fileName => {
? ? // 獲取組件配置(實(shí)例)
? ? const componentConfig = requireComponent(fileName)
? ? // 獲取組件的 PascalCase 命名(eg: MYHeader)
? ? const componentName = _.upperFirst(
? ? ? // 獲取駝峰式命名
? ? ? _.camelCase(
? ? ? ? // 剝?nèi)ノ募_(kāi)頭的 `./` 和結(jié)尾的擴(kuò)展名 eg: ./food-header.vue -> foodHeader
? ? ? ? fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
? ? ? )
? ? )
? ? ? // 全局注冊(cè)組件
? ? Vue.component(
? ? ? componentName,
? ? ? // 如果這個(gè)組件選項(xiàng)是通過(guò) `export default` 導(dǎo)出的,
? ? ? // 那么就會(huì)優(yōu)先使用 `.default`,
? ? ? // 否則回退到使用模塊的根。
? ? ? componentConfig.default || componentConfig
? ? )
? })
}

vue組件注冊(cè)–全局注冊(cè)

使用require.context實(shí)現(xiàn)前端工程自動(dòng)化(實(shí)現(xiàn)全局組件自動(dòng)化注冊(cè)的js腳本)

vue的組件注冊(cè)分為全局注冊(cè)和局部注冊(cè),使用上的基本區(qū)分如下:

本文腳本為參考vue官網(wǎng)文檔,并在js腳本代碼和注釋上做了一些調(diào)整,以求看了就理解會(huì)用。因官網(wǎng)文檔總是惜字如金,有些地方還不是那么一下就容易理解和使用,可以把該文章看做官網(wǎng)的進(jìn)化版

全局注冊(cè):即注冊(cè)完畢后,在全局皆可使用,無(wú)需import引入組件和compoment注冊(cè)組件,直接使用即可。如注冊(cè)的全局組件未使用,webpack在打包時(shí),仍然會(huì)打包該組件內(nèi)容。(這里個(gè)人認(rèn)為,如果不使用組件,那注冊(cè)它干嘛?所以大部分時(shí)候這個(gè)打包的注意事項(xiàng)可以忽略。當(dāng)然,如果留存組件,以備后續(xù)使用的,也可以進(jìn)行局部注冊(cè))。

局部注冊(cè):將需要使用的組件寫(xiě)在vue文件中,在需要使用的時(shí)候,利用import引入該文件,compoment注冊(cè)該組件并命名該組件在使用時(shí)的名字,然后即可像使用標(biāo)簽一樣使用此組件。(局部注冊(cè)與全局注冊(cè)的區(qū)別就是,如果局部注冊(cè)的組件你沒(méi)有使用過(guò),那么在webpack打包時(shí)就不會(huì)打包該文件,如有組件留存在項(xiàng)目中,但后續(xù)可能會(huì)使用的,可以使用局部注冊(cè))

廢話不多說(shuō),開(kāi)始代碼;前面一段是該腳本使用的基本介紹,實(shí)用黨可跳過(guò)(建議都了解一下)

基本思路

一個(gè)webpack的api,通過(guò)執(zhí)行require.context函數(shù)獲取一個(gè)特定的上下文,主要用來(lái)實(shí)現(xiàn)自動(dòng)化導(dǎo)入模塊,在前端工程中,如果遇到從一個(gè)文件夾引入很多模塊的情況,可以使用這個(gè)api,它會(huì)遍歷文件夾中的指定文件,然后自動(dòng)導(dǎo)入,使得不需要每次顯式的調(diào)用import導(dǎo)入模塊

使用場(chǎng)景

在過(guò)去的組件需要導(dǎo)入和全局注冊(cè)時(shí),利用require.context函數(shù),進(jìn)行批量注冊(cè),使得組件注冊(cè)實(shí)現(xiàn)自動(dòng)化,即使用新的組件需要全局注冊(cè),只需要在自定的文件夾下創(chuàng)建即可全局使用,但創(chuàng)建時(shí)要注意自己的自動(dòng)化文件中的查找文件的匹配規(guī)則,否則,不符合自定義的查找規(guī)則,無(wú)法自動(dòng)注冊(cè)為全局組件。

注意:**所有需要全局注冊(cè)的組件,都要在指定的文件夾內(nèi),否則該腳本遍歷不到你的組件,就無(wú)法進(jìn)行自動(dòng)化的注冊(cè)和使用了

在項(xiàng)目為webpack打包時(shí),使用自動(dòng)化全局注冊(cè)會(huì)更加友好:

基本代碼如下:

import vue from 'vue'
const requireComponent = require.context( // webpack的api,一個(gè)函數(shù)方法,匹配文件
  '.', // 查看當(dāng)前目錄下的文件(查找需要文件的相對(duì)路徑)
  false, // 不查看子文件
  /.vue$/ // 匹配方式正則表達(dá)式,只查看后綴為.vue的文件
)
console.log(requireComponent)
// 循環(huán)獲取到的文件,可在循環(huán)時(shí)處理文件名
requireComponent.keys().forEach((fileName) => {
  console.log(1)
  // 獲取組件配置(組件模板)
  const componentConfig = requireComponent(fileName)
  // 將被注冊(cè)的組件名字,對(duì)獲取的組件文件名進(jìn)行處理
  const componentName = fileName
    .replace(/^\.\/_/, '')
    .replace(/\.\w+$/, '')
    .split('./')
    .join('')
  console.log(componentName, '基礎(chǔ)組件文件獲取測(cè)試')
  // 將組件在循環(huán)中注冊(cè)到全局,
  vue.component(componentName, // 依據(jù)文件名處理好的,將要被注冊(cè)到全局的組件名
    componentConfig.default || componentConfig)
})

在文件正確打印出處理好的組件名時(shí),即表示自動(dòng)化組件注冊(cè)基本完成,然后在main.js中引入自動(dòng)化組件注冊(cè)的js文件

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import ElementUI from 'element-ui'
import 'element-ui/lib/theme-chalk/index.css'
import './components/component/_globals' // 直接引入共享到全局即可實(shí)現(xiàn)自動(dòng)化組件注冊(cè)
Vue.config.productionTip = false
Vue.use(ElementUI)
new Vue({
  router,
  store,
  render: h => h(App)
}).$mount('#app')

需要注意的是:在團(tuán)隊(duì)合作時(shí),需要注意自動(dòng)化文件中指定的組件文件夾,和匹配文件名的規(guī)則

如下為具體的文件位置和使用效果的截圖:

在這里插入圖片描述

在這里插入圖片描述

在這里插入圖片描述

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 詳解如何在vue-cli中使用vuex

    詳解如何在vue-cli中使用vuex

    這篇文章主要介紹了詳解如何在vue-cli中使用vuex,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • vue.js指令v-model使用方法

    vue.js指令v-model使用方法

    這篇文章主要為大家詳細(xì)介紹了vue.js指令v-model的使用方法 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • 詳解10分鐘學(xué)會(huì)vue滾動(dòng)行為

    詳解10分鐘學(xué)會(huì)vue滾動(dòng)行為

    本篇文章主要介紹了vue滾動(dòng)行為,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-09-09
  • 詳解Vue3?中的watchEffect?特性

    詳解Vue3?中的watchEffect?特性

    這篇文章主要介紹了Vue3?中的?watchEffect?特性詳解,watchEffect?是?Vue3?中非常有用的一個(gè)特性,它可以讓我們輕松地監(jiān)聽(tīng)響應(yīng)式數(shù)據(jù)的變化,并在數(shù)據(jù)發(fā)生變化時(shí)執(zhí)行指定的回調(diào)函數(shù),從而簡(jiǎn)化代碼并提高應(yīng)用的性能,需要的朋友可以參考下
    2023-04-04
  • 詳解vue開(kāi)發(fā)中調(diào)用微信jssdk的問(wèn)題

    詳解vue開(kāi)發(fā)中調(diào)用微信jssdk的問(wèn)題

    這篇文章主要介紹了vue開(kāi)發(fā)中調(diào)用微信jssdk的問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 深入理解與使用keep-alive(配合router-view緩存整個(gè)路由頁(yè)面)

    深入理解與使用keep-alive(配合router-view緩存整個(gè)路由頁(yè)面)

    這篇文章主要介紹了深入理解與使用keep-alive(配合router-view緩存整個(gè)路由頁(yè)面),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • SpringBoot+Vue3實(shí)現(xiàn)上傳文件功能

    SpringBoot+Vue3實(shí)現(xiàn)上傳文件功能

    這篇文章主要介紹了SpringBoot+Vue3實(shí)現(xiàn)上傳文件功能,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • vue彈窗插件實(shí)戰(zhàn)代碼

    vue彈窗插件實(shí)戰(zhàn)代碼

    這篇文章主要介紹了vue彈窗插件實(shí)戰(zhàn)代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-09-09
  • 一文搞懂Vue2中的組件通信

    一文搞懂Vue2中的組件通信

    這篇文章主要為大家介紹了Vue2中的組件通信方式,文中通過(guò)示例進(jìn)行了詳細(xì)的介紹,對(duì)我們學(xué)習(xí)Vue有一定的幫助,感興趣的小伙伴可以了解一下
    2022-07-07
  • vue實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)scrollIntoView()使用案例

    vue實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)scrollIntoView()使用案例

    這篇文章主要介紹了vue實(shí)現(xiàn)錨點(diǎn)跳轉(zhuǎn)scrollIntoView()使用案例,文中結(jié)合實(shí)例代碼介紹了vue錨點(diǎn)跳轉(zhuǎn)的三種方式(頁(yè)內(nèi)跳轉(zhuǎn),跨頁(yè)跳轉(zhuǎn),函數(shù)跳轉(zhuǎn)),需要的朋友可以參考下
    2023-07-07

最新評(píng)論