iT邦幫忙

2022 iThome 鐵人賽

DAY 23
0
Modern Web

淺入淺出 Rails with Vue系列 第 23

【Day 23】淺入淺出 Rails with Vue - Vue 的基本概念 - 22

  • 分享至 

  • xImage
  •  

前言

本系列將介紹 Rails with Vue 的基本概念,並且以一個簡單的專案 Todo 來說明如何使用 Rails with Vue。我將透過這一系列的文章記錄我學習的過程,並且將我所學到的知識分享給大家。

Component Registration

Component Names

Name Casing

在定義 Component Name 的時候有兩種方式,一種是使用 kebab-case,另一種是使用 PascalCase。

  1. with kebab-case

kebab-case:使用連字符來分隔單字,例如:my-component-name

Vue.component('my-component-name', { /* ... */ })
  1. with PascalCase

PascalCase:使用大寫字母來分隔單字,例如:MyComponentName

Vue.component('MyComponentName', { /* ... */ })

當我們使用 PascalCase 定義時,你可以在引用 custom element 時使用 kebab-case,也可以使用 PascalCase,
也就代表你可以使用 <my-component-name><MyComponentName> 來引用。
但是 kebab-case 的 custom element 只能使用 kebab-case 來引用。

Global Registration

到目前為止的範例中,我們都是使用 Vue.component 來註冊 component,這種方式稱為全域註冊,也就是說這個 component 會在整個 Vue 的範圍內都可以使用。

Vue.component('my-component-name', {
  // ... options ...
})

以下這些範例都是使用全域註冊的方式,也就代表這些 components 可以在任何 root Vue instance (new Vue) 的 template 中使用。

Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })

new Vue({ el: '#app' })

例如以下範例中,我們可以在 #app 的 template 中使用 <component-a><component-b><component-c> 這三個 components。

<div id="app">
  <component-a></component-a>
  <component-b></component-b>
  <component-c></component-c>
</div>

除了在 root Vue instance 的 template 中使用,這三個 components 也可以在彼此的 template 中互相使用。

Local Registration

不管是哪種語言,如果非必要,都不建議使用全域 component,因為全域變數會造成命名衝突,而且也不好管理。
假如我們使用像是 Webpack 這種 build tool,就算我們沒有使用某些全域 component,也還是會被打包進去。
這樣就會增加使用者下載的檔案大小,也會增加瀏覽器解析的時間。

Reference


上一篇
【Day 22】淺入淺出 Rails with Vue - Vue 的基本概念 - 21
下一篇
【Day 23】淺入淺出 Rails with Vue - Vue 的基本概念 - 22
系列文
淺入淺出 Rails with Vue30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言