vue -- 注冊組件


一、全局組件

1、組件名稱

命名的時候:串聯或者駝峰

component-name
componentName

使用的時候必須全部小寫串聯

<component-name></component-name>

注冊方式
全局注冊的組件一定要寫在vue實例之前,否則沒有效果,全局組件可以在所有組件中使用

Vue.component('componentName',{
    // options,這里其實相當於一個extends對象
})

二、局部組件

1、子組件

有點類似創建一個extends拓展,子組件只能在注冊的組件里面使用

let componentName = { /* options */ }

// 聲明的子組件必須在vue實例中注冊了才能使用
let app = new Vue({
    components: {
        'div': componentName
    }
})

2、公共組件

其實每一個vue文件都可以看作是一個組件,我們可以引入這個vue文件,在想要展示頁面展示出來

import ComponentName from '../components/mycomponent.vue'

// 注冊組件
let app = new Vue({
    components: {
        'div':  ComponentName
    }
})

// 在vue-cli里面經常這么寫
export default {
    components: {
        ComponentName   => // 這個是es6的寫法好像,如果key和value是一樣的,則可以直接寫value,不用再寫key
    }
}

三、自動化全局注冊基本組件

通過require.context來全局注冊這些常用基礎組件

import Vue from 'vue'
import upperFirst from 'lodash/upperFirst'
import camelCase from 'lodash/camelCase'

const requireComponent = require.context(
  // components 文件夾的相對路徑
  './components',
  // 是否查找子文件夾
  false,
  // 用於匹配組件文件名的正則表達式
  /Base[A-Z]\w+\.(vue|js)$/
)

requireComponent.keys().forEach(fileName => {
  // 獲取組件配置
  const componentConfig = requireComponent(fileName)

  // 取得組件的 Pascal 式命名
  const componentName = upperFirst(
    camelCase(
      // 將文件名前面的 `./` 和擴展名剝離
      fileName.replace(/^\.\/(.*)\.\w+$/, '$1')
    )
  )

  // 以全局方式注冊組件
  Vue.component(
    componentName,
    // 如果組件是通過 `export default` 導出,
    // 則在 `.default` 中,查找組件選項,
    // 否則回退至模塊根對象中,查找組件選項
    componentConfig.default || componentConfig
  )
})


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM