Jadual Kandungan
{{ owner.name }}
Rumah hujung hadapan web tutorial js Panduan Pemula untuk Bekerja Dengan Komponen di Vue

Panduan Pemula untuk Bekerja Dengan Komponen di Vue

Feb 14, 2025 am 09:35 AM

A Beginner’s Guide to Working With Components in Vue

seni bina komponen vue.js menjadikan membina antara muka pengguna yang cekap dan mudah. Ia membolehkan anda memecahkan aplikasi anda ke dalam komponen yang lebih kecil dan boleh diguna semula dan kemudian membina struktur yang lebih kompleks dengan komponen ini.

Panduan ini akan memberi anda pengenalan lanjutan kepada komponen VUE. Kami akan meneroka cara membuat komponen, bagaimana untuk lulus data antara komponen (melalui props dan bas acara), dan bagaimana untuk menjadikan kandungan tambahan dalam komponen menggunakan elemen

Vue. Setiap contoh akan datang dengan demo codepen runnable. <slot></slot>

mata utama

    Seni bina komponen Vue membantu memecahkan UI ke dalam coretan yang boleh diguna semula, mudah dikendalikan, dengan itu meningkatkan kebolehgunaan semula dan organisasi kod.
  • Komponen boleh dibuat secara global menggunakan
  • atau secara tempatan dalam komponen-fail satu-fail. Vue.component
  • Data boleh diluluskan kepada subkomponen menggunakan prop, menyediakan cara yang jelas dan berstruktur untuk mengurus dan lulus data dalam pokok komponen.
  • Bas acara boleh digunakan untuk mengurus komunikasi secara berkesan dari komponen kanak -kanak ke komponen induk, yang membolehkan komponen kanak -kanak menghantar data kembali ke hierarki komponen.
  • elemen
  • Vue membantu kandungan sarang dalam komponen, menjadikannya lebih fleksibel dan dapat menerima kandungan dari komponen induk, yang dapat ditimpa dengan kandungan sandaran. <slot></slot>

bagaimana membuat komponen dalam vue

Komponen pada dasarnya adalah contoh yang boleh digunakan semula dengan nama. Terdapat banyak cara untuk membuat komponen dalam aplikasi VUE. Sebagai contoh, dalam projek kecil dan sederhana, anda boleh mendaftarkan komponen global menggunakan kaedah

seperti berikut: Vue.component

Nama komponen
Vue.component('my-counter', {
  data() {
    return {
      count: 0
    }
  },
  template: `<div>{{ count }}</div>`
})

new Vue({ el: '#app' })</pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
ialah

. Ia boleh digunakan seperti ini: my-counter

Apabila menamakan komponen, anda boleh memilih untuk menggunakan kebab-case (
<div>
  <my-counter></my-counter>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
) atau pascal-case (). Apabila merujuk komponen dalam templat, sama ada varian boleh digunakan, tetapi apabila merujuk komponen secara langsung di DOM (seperti yang ditunjukkan dalam contoh di atas), hanya nama tag

kebab yang sah. my-custom-component MyCustomComponent anda juga dapat melihat bahawa dalam contoh di atas, adalah fungsi yang mengembalikan objek literal (bukannya objek literal itu sendiri). Tujuannya adalah untuk membiarkan setiap contoh komponen mempunyai objek data sendiri tanpa perlu berkongsi contoh global dengan semua contoh lain.

Terdapat beberapa cara untuk menentukan templat komponen. Di atas kami menggunakan literasi templat, tetapi kami juga boleh menggunakan penanda dengan

atau templat di dalam DOM. Anda boleh membaca lebih lanjut mengenai cara yang berbeza untuk menentukan templat di sini. data

komponen fail tunggal text/x-template

Dalam projek yang lebih kompleks, komponen global dengan cepat boleh menjadi sukar untuk dikendalikan. Dalam kes ini, masuk akal untuk merancang aplikasi anda untuk menggunakan komponen fail tunggal. Seperti namanya, ini adalah fail tunggal dengan sambungan .vue yang mengandungi <template>, </pre>

dan komponen mycounter mungkin kelihatan seperti ini:
Vue.component('my-counter', {
  data() {
    return {
      count: 0
    }
  },
  template: `<div>{{ count }}</div>`
})

new Vue({ el: '#app' })</pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

seperti yang anda lihat, apabila menggunakan komponen fail tunggal, anda boleh mengimport dan menggunakannya secara langsung dalam komponen yang memerlukannya.

Vue.component() Dalam panduan ini, saya akan menggunakan kaedah

untuk mendaftarkan komponen untuk menunjukkan semua contoh.

Menggunakan komponen fail tunggal sering melibatkan langkah-langkah bangunan (contohnya, menggunakan Vue CLI). Jika anda ingin mengetahui lebih lanjut, lihat "Vue CLI Gets Stare Guide" dalam siri Vue ini.

pemindahan data ke komponen melalui props

Props membolehkan kita lulus data dari komponen induk ke komponen kanak -kanak. Ini membolehkan komponen kami dibahagikan kepada ketulan yang lebih kecil untuk mengendalikan fungsi tertentu. Sebagai contoh, jika kita mempunyai komponen blog, kita mungkin ingin memaparkan maklumat seperti butiran pengarang, butiran pos (tajuk, badan, dan imej), dan komen.

kita boleh memecahkannya ke dalam komponen kanak -kanak supaya setiap komponen memproses data tertentu, menjadikan pokok komponen kelihatan seperti ini:
<div>
  <my-counter></my-counter>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika anda masih tidak percaya pada manfaat menggunakan komponen, luangkan masa untuk menyedari betapa bergunanya gabungan ini. Sekiranya anda ingin meninjau semula kod ini pada masa akan datang, anda akan segera jelas bagaimana halaman dibina dan di mana anda perlu mencari fungsi mana (iaitu komponen yang mana). Cara deklaratif untuk menggabungkan antara muka juga menjadikannya lebih mudah bagi mereka yang tidak biasa dengan asas kod untuk memulakan dengan cepat dan meningkatkan kecekapan.

kerana semua data akan diluluskan dari komponen induk, ia mungkin kelihatan seperti ini:
<template>
  <div>{{ count }}</div>
</template>

<🎜></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

author-detail Dalam komponen contoh di atas, kami menentukan butiran pengarang dan menyiarkan maklumat. Seterusnya, kita perlu membuat komponen kanak -kanak. Mari namakan komponen kanak -kanak

. Oleh itu, templat HTML kami akan kelihatan seperti ini:
<blogpost>
  <authordetails></authordetails>
  <postdetails></postdetails>
  <comments></comments>
</blogpost></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

owner Kami lulus objek pengarang kepada komponen kanak -kanak sebagai props bernama owner. Terdapat keperluan untuk memberi perhatian kepada perbezaan di sini. Dalam komponen kanak -kanak, author adalah nama prop yang kami terima data dari komponen induk. Data yang kami mahu terima dipanggil

, yang kami tentukan dalam komponen induk.

author-detail Untuk mengakses data ini, kita perlu mengisytiharkan prop dalam komponen

:
new Vue({
  el: '#app',
  data() {
    return {
      author: {
        name: 'John Doe',
        email: 'jdoe@example.com'
      }
    }
  }
})</pre>
Salin selepas log masuk
Salin selepas log masuk

Kami juga boleh mengaktifkan pengesahan apabila melepasi prop untuk memastikan data yang betul diluluskan. Ini serupa dengan proptypes dalam React. Untuk membolehkan pengesahan dalam contoh di atas, ubah komponen kami untuk kelihatan seperti ini:
<div>
  <author-detail :owner="author"></author-detail>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk

Jika kita lulus jenis prop yang salah, anda akan melihat ralat dalam konsol yang serupa dengan apa yang saya tunjukkan di bawah:
Vue.component('author-detail', {
  template: `
    <div>
      <h2 id="owner-name">{{ owner.name }}</h2>
      <p>{{ owner.email }}</p>
    </div>
  `,
  props: ['owner']
})</pre>
Salin selepas log masuk
Salin selepas log masuk

Terdapat panduan rasmi dalam dokumentasi VUE yang boleh anda gunakan untuk memahami pengesahan prop.

Komunikasi dari komponen kanak -kanak ke komponen induk melalui bas acara

<script></code> 和 <code>&lt;style&gt;</code> 部分。</p> <p>对于上面的示例,App 组件可能如下所示:</p> <pre class="brush:php;toolbar:false"><code class="vue">&lt;template&gt; <div> <my-counter></my-counter> </div> </template> <script> import myCounter from './components/myCounter.vue' export default { name: 'app', components: { myCounter } } </script>

Acara dikendalikan dengan membuat kaedah pembalut yang dicetuskan apabila peristiwa yang dipilih berlaku. Untuk mengkaji semula, mari berkembang berdasarkan contoh kaunter awal kami supaya ia meningkat setiap kali butang diklik.

Komponen kami sepatutnya kelihatan seperti ini:

Vue.component('my-counter', {
  data() {
    return {
      count: 0
    }
  },
  template: `<div>{{ count }}</div>`
})

new Vue({ el: '#app' })</pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

dan templat kami:

<div>
  <my-counter></my-counter>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Harapan ini cukup mudah. Seperti yang anda lihat, kami menyambung ke acara onClick untuk mencetuskan kaedah increase adat setiap kali butang diklik. Kaedah increase kemudian meningkatkan atribut data count kami. Sekarang mari kita memperluaskan contohnya, gerakkan butang kaunter ke dalam komponen yang berasingan dan paparkan kiraan dalam komponen induk. Kita boleh melakukan ini menggunakan bas acara.

Bas acara sangat mudah apabila anda ingin berkomunikasi dari komponen kanak -kanak ke komponen induk. Ini bertentangan dengan kaedah komunikasi lalai, yang berasal dari komponen induk kepada komponen kanak -kanak. Jika permohonan anda tidak cukup besar untuk tidak memerlukan Vuex, anda boleh menggunakan bas acara. (Anda boleh membaca lebih lanjut mengenainya dalam "Panduan Bermula Vuex" dalam siri Vue ini.)

Jadi apa yang perlu kita lakukan ialah: kiraan akan diisytiharkan dalam komponen induk dan diturunkan kepada komponen kanak -kanak. Kemudian dalam komponen kanak -kanak, kami ingin meningkatkan nilai count dan pastikan nilai dalam komponen induk dikemas kini.

Komponen aplikasi akan kelihatan seperti ini:

<template>
  <div>{{ count }}</div>
</template>

<🎜></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Kemudian dalam komponen kanak -kanak, kami ingin menerima kiraan melalui alat peraga dan mempunyai cara untuk meningkatkannya. Kami tidak mahu memaparkan nilai count dalam komponen kanak -kanak. Kami hanya mahu bertambah dari komponen kanak -kanak dan menjadikannya mencerminkan komponen induk:

<blogpost>
  <authordetails></authordetails>
  <postdetails></postdetails>
  <comments></comments>
</blogpost></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

maka templat kami akan kelihatan seperti ini:

new Vue({
  el: '#app',
  data() {
    return {
      author: {
        name: 'John Doe',
        email: 'jdoe@example.com'
      }
    }
  }
})</pre>
Salin selepas log masuk
Salin selepas log masuk

Jika anda cuba meningkatkan nilai seperti itu, ia tidak akan berfungsi. Agar ia berfungsi, kita perlu mengeluarkan acara dari komponen kanak -kanak, menghantar nilai baru count, dan juga mendengar acara ini dalam komponen induk.

Pertama, kami membuat contoh Vue baru dan menetapkannya kepada eventBus:

<div>
  <author-detail :owner="author"></author-detail>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk

kini boleh menggunakan bas acara dalam komponen kami. Subkomponen akan kelihatan seperti ini:

Vue.component('author-detail', {
  template: `
    <div>
      <h2 id="owner-name">{{ owner.name }}</h2>
      <p>{{ owner.email }}</p>
    </div>
  `,
  props: ['owner']
})</pre>
Salin selepas log masuk
Salin selepas log masuk

peristiwa setiap kali kaedah increment dipanggil. Kita perlu mendengar acara itu dalam komponen utama dan menetapkan count kepada nilai yang kita dapat dari acara yang dipancarkan:

Vue.component('author-detail', {
  template: `
    <div>
      <h2 id="owner-name">{{ owner.name }}</h2>
      <p>{{ owner.email }}</p>
    </div>
  `,
  props: {
    owner: {
      type: Object,
      required: true
    }
  }
})</pre>
Salin selepas log masuk

Perhatikan bahawa kami menggunakan kaedah Lifecycle created Vue untuk menyambung ke komponen sebelum dipasang dan menubuhkan bas acara.

Jika permohonan anda tidak kompleks, menggunakan bas acara adalah baik, tetapi ingat bahawa apabila aplikasi anda berkembang, anda mungkin mahu menggunakan VUEX sebaliknya.

Gunakan kandungan dalam komponen bersarang slot

Dalam contoh-contoh yang telah kita lihat setakat ini, komponen adalah unsur-unsur penutup diri. Walau bagaimanapun, untuk mewujudkan komponen yang boleh dikumpulkan bersama dengan cara yang berguna, kita perlu bersarang dengan satu sama lain seperti yang kita lakukan dengan elemen HTML.

Jika anda cuba menggunakan komponen dengan tag akhir dan letakkan beberapa kandungan di dalamnya, anda akan melihat bahawa Vue hanya menelannya. Apa -apa sahaja di antara tag permulaan dan akhir komponen akan digantikan dengan output rendering komponen itu sendiri:

Vue.component('my-counter', {
  data() {
    return {
      count: 0
    }
  },
  template: `<div>{{ count }}</div>`
})

new Vue({ el: '#app' })</pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

bernasib baik, slot Vue memungkinkan untuk lulus nilai sewenang -wenang kepada komponen. Ini boleh menjadi apa -apa dari komponen induk ke komponen kanak -kanak, dari elemen DOM ke data lain. Mari lihat bagaimana mereka berfungsi.

Bahagian skrip komponen

akan kelihatan seperti ini:

<div>
  <my-counter></my-counter>
</div></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

maka templat akan kelihatan seperti ini:

<template>
  <div>{{ count }}</div>
</template>

<🎜></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Kandungan dalam komponen

<list> akan diberikan antara label elemen <slot>. Kami juga boleh menggunakan kandungan sandaran sekiranya komponen induk tidak menyuntik apa -apa.

<blogpost>
  <authordetails></authordetails>
  <postdetails></postdetails>
  <comments></comments>
</blogpost></pre>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Jika tiada kandungan dari komponen induk, kandungan sandaran akan diberikan.

Kesimpulan

Ini adalah pengenalan peringkat tinggi untuk menggunakan komponen dalam Vue. Kami melihat bagaimana untuk membuat komponen di Vue, bagaimana untuk berkomunikasi dari ibu bapa kepada komponen kanak -kanak melalui prop, dan bagaimana untuk berkomunikasi dari komponen kanak -kanak ke ibu bapa ke atas bas acara. Kami kemudiannya dengan melihat slot, cara yang mudah untuk menggabungkan komponen dengan cara yang berguna. Saya harap anda dapati tutorial ini berguna.

(bahagian FAQs ditinggalkan kerana terlalu lama dan tidak sepadan dengan matlamat asal pseudo. Beberapa kandungan FAQ boleh ditulis semula seperti yang diperlukan, tetapi niat asal mesti tidak berubah.)

Atas ialah kandungan terperinci Panduan Pemula untuk Bekerja Dengan Komponen di Vue. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1664
14
Tutorial PHP
1269
29
Tutorial C#
1248
24
Enjin JavaScript: Membandingkan Pelaksanaan Enjin JavaScript: Membandingkan Pelaksanaan Apr 13, 2025 am 12:05 AM

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

JavaScript: meneroka serba boleh bahasa web JavaScript: meneroka serba boleh bahasa web Apr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend) Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend) Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Dari C/C ke JavaScript: Bagaimana semuanya berfungsi Apr 14, 2025 am 12:05 AM

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

JavaScript dan Web: Fungsi teras dan kes penggunaan JavaScript dan Web: Fungsi teras dan kes penggunaan Apr 18, 2025 am 12:19 AM

Penggunaan utama JavaScript dalam pembangunan web termasuk interaksi klien, pengesahan bentuk dan komunikasi tak segerak. 1) kemas kini kandungan dinamik dan interaksi pengguna melalui operasi DOM; 2) pengesahan pelanggan dijalankan sebelum pengguna mengemukakan data untuk meningkatkan pengalaman pengguna; 3) Komunikasi yang tidak bersesuaian dengan pelayan dicapai melalui teknologi Ajax.

JavaScript in Action: Contoh dan projek dunia nyata JavaScript in Action: Contoh dan projek dunia nyata Apr 19, 2025 am 12:13 AM

Aplikasi JavaScript di dunia nyata termasuk pembangunan depan dan back-end. 1) Memaparkan aplikasi front-end dengan membina aplikasi senarai TODO, yang melibatkan operasi DOM dan pemprosesan acara. 2) Membina Restfulapi melalui Node.js dan menyatakan untuk menunjukkan aplikasi back-end.

See all articles