組件在 vue開發中是必不可少的一環,用好組件這把屠龍刀,就能解決不少問題。
組件是什么
官方的定義:
官方的定義已經非常簡明了,組件就是一個實例。
如何使用組件
在具體編寫組件實例代碼前,我們先來如下幾個約定:
約束不多,但最后兩個需要牢記在心。
基于單文件組件的前提下,一個組件的基本構造如下:
<template> <div> <!-- 頁面內容 --> </div></template><script>export default { // 組件的邏輯,數據部分}</script><style> /** 樣式定義 **/</style>
一個單文件組件由三個部分組成:
這三部分會在接下來的章節中一一實踐,在本篇中并不會給出具體的實例代碼。 本篇更側重于講清楚在寫組件之前應該要注意的地方。
組件的命名
在這里向跑題的一點是:
命名不僅僅是為了自己維護代碼,更多的是為了團隊、協作開發以及交流。良好的命名會讓你的代碼更具可讀性,而良好的可讀性會讓你的代碼更具可維護性。綜上,希望童鞋們能認真命名,避免在項目中產出類似的命名:
var x = getSomething(y);var somethingA = getSomethingB();...
在這里,vue官方是強烈建議遵循 W3C規范去為組件命名的:
當然你也可以使用Pascal命名:
但是在使用組件時,都是使用的 W3C規范。假設現在你有一個名稱為 HelloWorld的組件,那么如何在其他組件中使用:
<hello-world></hello-world>
建議在命名時考慮以下因素:
在同一個項目中,盡可能保持統一風格
組件的注冊
在另一個組件中如果需要使用其它自定義組件,那首先是需要將組件注冊。
而注冊分為:
局部注冊
局部注冊的用法:
<template> <div> <!-- 第三步: 在頁面中使用 --> <hello-world></hello-world> </div></template><script>// 第一步:引入組件import HelloWorld from 'your/component/path'export default { // 第二步:在當前組件注冊此組件,注冊之后才可以在頁面中使用 components: [ HelloWorld ]}</script>
上圖我們可以看到,在單文件組件中局部注冊的使用步驟:
全局注冊
如果這個 HelloWorld組件是經常要用的一個 UI組件怎么辦,如果使用局部注冊那意味著每個組件中都將存在第一步和第二步的重復代碼。
看見重復代碼,我們應該形成一種想要干掉它的本能。因為重復代碼屬于項目中的壞味道,會讓項目的整體質量下降,并且直接影響項目的可維護性和可擴展性。
想想,當這個項目非常龐大,龐大到這個基礎組件已經被成百上千個組件引用了,哪天你要改這個組件的文件名或者移動路徑時,將是一場災難。
因此,在 vue中提供了全局注冊的辦法。只需注冊一次,剩余組件中第一步和第二步的代碼就可以直接刪掉,因為全局注冊之后可以直接在視圖中使用。
// main.js 入口文件,在創建根實例之前將其注冊import HelloWorld from 'your/component/path'Vue.component('HelloWorld', HelloWorld)new Vue({ ...})
但是這種手動全局注冊單個組件也存在一個問題:
這里童鞋們可以思考思考如何在 vue中實現自動全局注冊組件。
寫在后面
組件系統所包含的內容是相當豐富的,三言兩語很難說完整,因此這里只提組件最基礎的使用和注冊以及在實踐中會遇到的問題。
下一篇將會詳細的說明子組件及在其上進行數據傳遞的相關知識,同樣,也是以理論為主。也是作為基礎篇的最后一篇~
好了,以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對武林網的支持。
新聞熱點
疑難解答