一、元件名
寫元件之前你要明確你的目的,想要做一個什麼樣的元件,我們在註冊一個元件的時候,需要給元件一個名字,對於命名,儘可能明確,使用 kebab-case (短橫線分隔命名) 或 PascalCase (首字母大寫命名)。
使用 kebab-case (短橫線分隔命名) 定義一個元件時,我們在引用這個自定義元素時其格式 :
Vue.component('my-component-name', { /* ... */ }) <my-component-name>
使用 PascalCase (首字母大寫命名) 定義一個元件時,我們引用這個自定義元素時,其格式有兩種,不過有時這種命名的元件在呼叫時候,會自動解析成短橫線分割命名。
Vue.component('MyComponentName', { /* ... */ }) <my-component-name> <MyComponentName>
二、全域性註冊
元件全域性註冊後,可以在任何新建立的Vue根例項的模板中使用。
Vue.component('my-component-name', { // ... 選項 ... })
三、區域性註冊
全域性註冊往往是不夠理想的。比如,如果你使用一個像 webpack 這樣的構建系統,全域性註冊所有的元件意味著即便你已經不再使用一個元件了,它仍然會被包含在你最終的構建結果中。這造成了使用者下載的 JavaScript 的無謂的增加。
四、在模板系統中區域性註冊
目前學習vue都是用webpack構建的,對於一個網址各元件應該怎麼構造分配還是不夠熟悉。
我們在不同元件中複用其他元件,需要在區域性註冊之前匯入每個你想使用的元件。
例如,在一個假設的 ComponentB.js
或 ComponentB.vue
檔案中,我們需要使用ComponentA和ComponentC,那麼我們需要import,同時在 components
選項中定義你想要使用的元件。
import ComponentA from './ComponentA' import ComponentC from './ComponentC' export default { components: { ComponentA, ComponentC }, // ... }
五、基礎元件的自動化全域性註冊(還未實際應用過)
之前寫的父子元件都不是基礎通用的元件,如果我設計了很多button類,input類的只包含這種單個元素,在不同元件裡頻繁的使用,那麼就會造成有一些元件中會有很多包含基礎元件的長列表,會很冗雜。
如果你使用了 webpack (或在內部使用了 webpack 的 Vue CLI 3+),那麼就可以使用 require.context
只全域性註冊這些非常通用的基礎元件。