目錄
#全域元件
局部元件
動態元件
异步组件
首頁 常見問題 vue有幾大組件

vue有幾大組件

Dec 13, 2022 pm 07:02 PM
vue 組件 vue3

vue有4大元件:1、全域元件,用「app.component(...)」方法來註冊全域元件,全域元件可在應用的任何元件模板中使用。 2、局部元件,是在一個(父)元件中的「components」選項中註冊的元件。 3.動態元件,指根據給屬性is綁定值的不同來渲染不同名稱的元件。 4.非同步元件,在載入頁面時並不立即渲染,而是要等帶一些業務邏輯完成後,才會執行元件內的邏輯和渲染到頁面上。

vue有幾大組件

本教學操作環境:windows7系統、vue3版,DELL G3電腦。

Vue 的元件本質上是一個具有預先定義選項的實例,我們使用小型的、獨立和通常可重複使用的元件,透過層層拼裝,最終形成了一個完整的頁面。

元件必須先註冊以便Vue 應用程式能夠識別,有兩種元件的註冊類型:

<ul>
  • #全域註冊
  • 局部註冊
  • #全域元件

    (在根元件中)使用方法app.component('component-Name', {}) 來註冊全域元件,全域註冊的元件可以在應用程式中的任何元件的模板中使用。 (學習影片分享:vuejs入門教學程式設計基礎影片

    其中第一個參數時元件名,建議遵循W3C 規格中的自訂元件名稱(避免與目前以及未來的HTML 元素發生衝突):字母全小寫必須包含一個連字號。第二個參數是組件的配置選項。

    const app = Vue.createApp();
    app.component(&#39;my-component&#39;, {
        template: `<h1>Hello World!</h1>`
    });
    const vm = app.mount(&#39;#app&#39;)
    登入後複製

    ⚠️ 全域元件雖然可以方便地在各種元件中使用(包括各自的內部),但是這可能造成建置專案時體積增大,使用者下載 JavaScript 的無謂增加。

    需要在app.mount('#app') 應用掛載到DOM 之前進行全域元件的註冊

    局部元件

    在一個(父)元件中元件的components 選項中註冊的元件。

    這些子元件透過一個普通的JavaScript 物件來定義,其接收的參數和全域元件一樣,但是它們只能在該父元件中使用,稱為局部組件。

    對於 components 物件中的每個 property 來說,其 property 名就是自訂元素的名字,其 property 值就是這個元件的選項物件。

    const ComponentA = {
      /* ... */
    }
    const ComponentB = {
      /* ... */
    }
    const ComponentC = {
      /* ... */
    }
    登入後複製
    // 然后在父组件的 `components` 选项中定义你想要使用的组件
    const app = Vue.createApp({
      components: {
        &#39;component-a&#39;: ComponentA,
        &#39;component-b&#39;: ComponentB
      }
    })
    登入後複製

    動態元件

    動態元件指根據給屬性 is綁定值的不同來渲染不同名稱的元件。

    內建的標籤<component :is="componentName />" 用以動態明確不同的元件,透過控制綁定在屬性is 上的參數值,即可顯示對應的同名元件。

    屬性is 可以是:

    <ul>
  • 已註冊元件的名字
  • 一個元件的選項物件
  • 有時候為了在切換時,保存動態元件的狀態,例如元件中的輸入框的值,可以用標籤<keep-alive></keep-alive&gt ; 包裹動態元件

    屬性is 也可以用來解決HTML 元素嵌套的規則限制,將它套用到原生的HTML 標籤上,它的值就是元件名,讓原生標籤實際渲染出來的內容就是組件。

    因為對於<ul><ol><table><select> 這些元素,其內部允許放置的直接子元素是有嚴格限制的,如果嵌入其他元素會被視為無效的內容,而提升到外部造成最終渲染問題。但如果我們需要在這些元素中使用元件作為直接子元素,則可以在「合法」的子元素上使用屬性is,指定渲染的實際內容,這時屬性is 用在原生的HTML 元素上,如<tr> 其值 需要使用vue: 作為前綴,以表示解析的實際上是一個Vue 元件

    <table>
      <tr is="vue:blog-post-row"></tr>
    </table>
    登入後複製

    但以上限制只是在HTML 中直接使用Vue 模板時才會遇到,如果是在一下前進使用模板就沒有這種限制:

    <ul>
  • 字符串,例如 template: &#39;...&#39;
  • 单文件组件 .vue
  • <script type="text/x-template">
  • 异步组件

    现在的大型网页往往需要异步获取不同的数据,Vue 有一个 defineAsyncComponent 方法定义异步组件,以优化应用的加载和用户体验。

    异步组件在加载页面时并不立即渲染,而是要等带一些业务逻辑完成后,才会执行组件内的逻辑和渲染到页面上。

    // 全局组件
    app.component(&#39;async-example&#39;, Vue.defineAsyncComponent(() => {
      return new Promise((resolve, reject) => {
        resolve({
          template: &#39;<div>I am async!</div>&#39;
        })
      })
    }))
    
    // 局部组件
    import { createApp, defineAsyncComponent } from &#39;vue&#39;
    
    createApp({
      // ...
      components: {
        AsyncComponent: defineAsyncComponent(() => {
          return new Promise((resolve, reject) => {
            resolve({
              template: &#39;<div>I am async!</div>&#39;
            })
          })
        })
      }
    })
    登入後複製

    异步组件的注册和一般的同步组件类似,如果是注册全局组件,也是使用 app.component()进行注册,不过第二个参数使用 Vue.defineAsyncComponent() 方法告诉 Vue 应用该组件是异步组件

    defineAsyncComponent() 方法的参数是一个匿名函数,而且函数是返回一个 Promise。在 Promise 内应该 resovlve({}) 一个对象,其中包含了构建组件相关配置参数。只有当 Promise resolvereject 才执行异步组件的处理。

    (学习视频分享:vuejs入门教程编程基础视频

    以上是vue有幾大組件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

    本網站聲明
    本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

    熱AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智慧驅動的應用程序,用於創建逼真的裸體照片

    AI Clothes Remover

    AI Clothes Remover

    用於從照片中去除衣服的線上人工智慧工具。

    Undress AI Tool

    Undress AI Tool

    免費脫衣圖片

    Clothoff.io

    Clothoff.io

    AI脫衣器

    Video Face Swap

    Video Face Swap

    使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

    熱工具

    記事本++7.3.1

    記事本++7.3.1

    好用且免費的程式碼編輯器

    SublimeText3漢化版

    SublimeText3漢化版

    中文版,非常好用

    禪工作室 13.0.1

    禪工作室 13.0.1

    強大的PHP整合開發環境

    Dreamweaver CS6

    Dreamweaver CS6

    視覺化網頁開發工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神級程式碼編輯軟體(SublimeText3)

    vue中怎麼用bootstrap vue中怎麼用bootstrap Apr 07, 2025 pm 11:33 PM

    在 Vue.js 中使用 Bootstrap 分為五個步驟:安裝 Bootstrap。在 main.js 中導入 Bootstrap。直接在模板中使用 Bootstrap 組件。可選:自定義樣式。可選:使用插件。

    vue怎麼給按鈕添加函數 vue怎麼給按鈕添加函數 Apr 08, 2025 am 08:51 AM

    可以通過以下步驟為 Vue 按鈕添加函數:將 HTML 模板中的按鈕綁定到一個方法。在 Vue 實例中定義該方法並編寫函數邏輯。

    vue中的watch怎麼用 vue中的watch怎麼用 Apr 07, 2025 pm 11:36 PM

    Vue.js 中的 watch 選項允許開發者監聽特定數據的變化。當數據發生變化時,watch 會觸發一個回調函數,用於執行更新視圖或其他任務。其配置選項包括 immediate,用於指定是否立即執行回調,以及 deep,用於指定是否遞歸監聽對像或數組的更改。

    vue多頁面開發是啥意思 vue多頁面開發是啥意思 Apr 07, 2025 pm 11:57 PM

    Vue 多頁面開發是一種使用 Vue.js 框架構建應用程序的方法,其中應用程序被劃分為獨立的頁面:代碼維護性:將應用程序拆分為多個頁面可以使代碼更易於管理和維護。模塊化:每個頁面都可以作為獨立的模塊,便於重用和替換。路由簡單:頁面之間的導航可以通過簡單的路由配置來管理。 SEO 優化:每個頁面都有自己的 URL,這有助於搜索引擎優化。

    vue返回上一頁的方法 vue返回上一頁的方法 Apr 07, 2025 pm 11:30 PM

    Vue.js 返回上一頁有四種方法:$router.go(-1)$router.back()使用 &lt;router-link to=&quot;/&quot;&gt; 組件window.history.back(),方法選擇取決於場景。

    vue.js怎麼引用js文件 vue.js怎麼引用js文件 Apr 07, 2025 pm 11:27 PM

    在 Vue.js 中引用 JS 文件的方法有三種:直接使用 &lt;script&gt; 標籤指定路徑;利用 mounted() 生命週期鉤子動態導入;通過 Vuex 狀態管理庫進行導入。

    vue遍歷怎麼用 vue遍歷怎麼用 Apr 07, 2025 pm 11:48 PM

    Vue.js 遍歷數組和對像有三種常見方法:v-for 指令用於遍歷每個元素並渲染模板;v-bind 指令可與 v-for 一起使用,為每個元素動態設置屬性值;.map 方法可將數組元素轉換為新數組。

    vue的div怎麼跳轉 vue的div怎麼跳轉 Apr 08, 2025 am 09:18 AM

    Vue 中 div 元素跳轉的方法有兩種:使用 Vue Router,添加 router-link 組件。添加 @click 事件監聽器,調用 this.$router.push() 方法跳轉。