1-10 vue全局組件和局部組件

vue全局組件和局部組件

Vue.js的組件化思想 —— 上

一拉庶、Vue中的組件

  • Vue視圖層的靈魂 —— 組件化
vuea7.png

組件(Component)是 Vue.js 最強大的功能之一。

組件可以擴展 HTML 元素秃励,封裝可重用的代碼氏仗。

在較高層面上,組件是自定義元素夺鲜, Vue.js 的編譯器為它添加特殊功能皆尔。在有些情況下,組件也可以是原生 HTML 元素的形式币励,以 is 特性擴展慷蠕。

  • 全局組件的創(chuàng)建和注冊
vuea11.png
  • 案例代碼:

    <!doctype html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <div id="app">
            <my-component></my-component>
        </div>
    <script src="js/vue.js"></script>
    <script>
        // 1. 創(chuàng)建組件構造器
        var Profile = Vue.extend({
            template: '<h1>我是自定義組件</h1>'
        });
    
        // 2. 注冊組件, 指定組件的名稱
        Vue.component('my-component', Profile);
    
        new Vue({
            el: '#app'
        })
    </script>
    </body>
    </html>
    

調用Vue.extend()創(chuàng)建的是一個組件構造器流炕,構造器有一個選項對象仅胞,選項對象的template屬性用于定義組件要渲染的HTML饼问;

調用Vue.component()注冊組件時揭斧,需要提供2個參數(shù):組件的標簽名 和 組件構造器讹开;注冊的組件要掛載到某個Vue實例下,否則它不會生效闹击;

Vue.extend() 和 Vue.component():由于 Vue 本身是一個構造函數(shù)赏半,Vue.extend() 是一個類繼承方法淆两,它用來創(chuàng)建一個 Vue 的子類并返回其構造函數(shù)秋冰。

而Vue.component() 的作用在于:建立指定的構造函數(shù)與 ID 字符串間的關系,從而讓 Vue.js 能在模板中使用它埃撵;直接向 Vue.component() 傳遞 options 時,它會在內部調用 Vue.extend()暂刘。

  • 局部組件的創(chuàng)建和注冊
    • 案例代碼

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>注冊局部組件</title>
      </head>
      <body>
          <div id="root">
              <my-component></my-component>
          </div>
          <div id="root2">
              <my-component></my-component>
          </div>
      <script src="js/vue.js"></script>
      <script>
          // 1. 創(chuàng)建組件構造器
          var Profile = Vue.extend({
              template: '<li>創(chuàng)建局部組件!</li>'
          })
          new Vue({
              el: '#root',
              components: {
                  'my-component': Profile
              }
          })
          new Vue({
              el: '#root2'
          })
      </script>
      </body>
      </html>
      
  • 另一種組件創(chuàng)建和注冊方式
    • 直接通過Vue.component注冊或獲取全局組件谣拣,主要體現(xiàn)在以下幾種方式:

      // 注冊組件,傳入一個擴展過的構造器
      Vue.component('my-component', Vue.extend({ /* ... */ }))
      // 注冊組件绪商,傳入一個選項對象(自動調用 Vue.extend)
      Vue.component('my-component', { /* ... */ })
      // 獲取注冊的組件(始終返回構造器)
      var MyComponent = Vue.component('my-component')
      
    • 自定義全局組件

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title></title>
      </head>
      <body>
        <div id="app">
            <my-component></my-component>
        </div>
      <script src="js/vue.js"></script>
      <script>
          Vue.component('my-component', {
              template: '<h1>自定義全局組件</h1>'
          })
          new Vue({
              el:'#app'
          })
      </script>
      </body>
      </html>
      
    • 自定義局部組件

      <!doctype html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Document</title>
      </head>
      <body>
      <div id="app">
          <my-component1></my-component1>
          <my-component2></my-component2>
      </div>
      <script src="js/vue.js"></script>
      <script>
          var app = new Vue({
              el: '#app',
              components: {
                  'my-component1': {
                      template: '<h1>局部組件1!</h1>'
                  },
                  'my-component2': {
                      template: '<h2>局部組件2!</h2>'
                  }
              }
          })
      </script>
      </body>
      </html>
      
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市例书,隨后出現(xiàn)的幾起案子刻炒,更是在濱河造成了極大的恐慌坟奥,老刑警劉巖爱谁,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件访敌,死亡現(xiàn)場離奇詭異,居然都是意外死亡爷抓,警方通過查閱死者的電腦和手機阻塑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門叮姑,熙熙樓的掌柜王于貴愁眉苦臉地迎上來据悔,“玉大人极颓,你說我怎么就攤上這事群嗤〔ぢ。” “怎么了狂秘?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵骇径,是天一觀的道長者春。 經(jīng)常有香客問我破衔,道長,這世上最難降的妖魔是什么晰筛? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮拴袭,結果婚禮上读第,老公的妹妹穿的比我還像新娘。我一直安慰自己拥刻,他們只是感情好,可當我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布般哼。 她就那樣靜靜地躺著逝她,像睡著了一般。 火紅的嫁衣襯著肌膚如雪擒贸。 梳的紋絲不亂的頭發(fā)上臀晃,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天徽惋,我揣著相機與錄音座韵,去河邊找鬼险绘。 笑死踢京,一個胖子當著我的面吹牛,可吹牛的內容都是我干的宦棺。 我是一名探鬼主播瓣距,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼代咸!你這毒婦竟也來了蹈丸?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤呐芥,失蹤者是張志新(化名)和其女友劉穎逻杖,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體思瘟,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡荸百,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了滨攻。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片管搪。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖铡买,靈堂內的尸體忽然破棺而出更鲁,到底是詐尸還是另有隱情,我是刑警寧澤奇钞,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布澡为,位于F島的核電站,受9級特大地震影響景埃,放射性物質發(fā)生泄漏媒至。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一谷徙、第九天 我趴在偏房一處隱蔽的房頂上張望拒啰。 院中可真熱鬧,春花似錦完慧、人聲如沸谋旦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽册着。三九已至,卻和暖如春脾歧,著一層夾襖步出監(jiān)牢的瞬間甲捏,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工鞭执, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留司顿,地道東北人芒粹。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像大溜,于是被迫代替她去往敵國和親化漆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,619評論 2 354

推薦閱讀更多精彩內容

  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,207評論 0 6
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容猎提,還有我對于 Vue 1.0 印象不深的內容获三。關于...
    云之外閱讀 5,048評論 0 29
  • 下載安裝搭建環(huán)境 可以選npm安裝,或者簡單下載一個開發(fā)版的vue.js文件 瀏覽器打開加載有vue的文檔時锨苏,控制...
    冥冥2017閱讀 6,037評論 0 42
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本疙教,Vue即被注冊為全局變量,可以在頁面使用了伞租。 如果希望搭建...
    Awey閱讀 11,015評論 4 129
  • 組件簡介# 組件系統(tǒng):組件系統(tǒng)是Vue.js其中一個重要的概念贞谓,它提供了一種抽象,讓我們可以使用獨立可復用的小組件...
    Gopal閱讀 304評論 0 3