赞
踩
随着年龄的增长,很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来,技术出身的人总是很难放下一些执念,遂将这些知识整理成文,以纪念曾经努力学习奋斗的日子。本文内容并非完全原创,大多是参考其他文章资料整理所得,感谢每位技术人的开源精神。
本文介绍 Vue3 中如何自定义组件。
Vue3 组件可以分为两类:
src/pages
或 src/views
目录下。src/components
目录下。本文主要说明如何自定义功能组件。
分类 | 名称 | 版本 |
---|---|---|
操作系统 | Windows | Windows 11 |
IDE | Visual Studio Code | 1.91.1 |
1> 创建 Vue3 工程,参考:【Vue3】工程创建及目录说明。
2> 删除 src
目录下 assets
和 components
目录。
3> 修改 src
目录下 main.ts
。
import { createApp } from 'vue'
import App from './App.vue'
createApp(App).mount('#app')
4> 自定义功能组件 Person
,在 src
目录下创建 components/Person.vue
。
<template> <div class="person"> <h3>姓名:{{ name }}</h3> <h3>年龄:{{ age }}</h3> </div> </template> <script setup lang="ts"> import { ref } from 'vue' const name = ref('Harry Potter') const age = ref(10) </script> <style scoped lang="scss"> .person { background-color: green; color: white; padding: 10px; } </style>
注意:需要执行 npm install -D sass
命令安装 CSS 预处理器。
5> 修改 Vue 根组件 src/App.vue
,引用 src/components/Person.vue
。
<template> <div class="root"> <Person /> </div> </template> <script setup lang="ts"> import Person from './components/Person.vue' </script> <style scoped lang="scss"> .root { background-color: orange; padding: 20px; } </style>
执行命令 npm run dev
,浏览器访问 http://localhost:5173/
观察自定义组件效果。
6> 还有另一种常用的自定义组件方法:在 src/components
目录下创建与组件同名的文件夹,文件夹下存放 index.vue
,如 src/components/Book/index.vue
。
<template> <div class="book"> <h4 v-for="book in books" :key="book.id">{{ book.name }}</h4> </div> </template> <script setup lang="ts" name="Book"> import { reactive } from 'vue' const books = reactive([ { id: '001', name: '哈利波特与魔法石' }, { id: '002', name: '哈利波特与密室' }, { id: '003', name: '哈利波特与阿兹卡班的囚徒' }, ]) </script> <style scoped lang="scss"> .book { background-color: blue; color: white; margin-top: 10px; padding: 10px; } </style>
注意:此处通过 <script>
标签的 name
属性指定组件名称,需要执行 npm i vite-plugin-vue-setup-extend -D
命令安装 setup 扩展,且还要修改根目录下的 vite.config.ts
配置文件如下。
7> 修改 Vue 根组件 src/App.vue
,引用 src/components/Book/index.vue
。
<template> <div class="root"> <Person /> <Book /> </div> </template> <script setup lang="ts"> import Person from './components/Person.vue' import Book from './components/Book/index.vue' </script> <style scoped lang="scss"> .root { background-color: orange; padding: 20px; } </style>
执行命令 npm run dev
,浏览器访问 http://localhost:5173/
观察自定义组件效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。