一、环境搭建
在开始之前,确保你的开发环境已经安装了Node.js和npm(Node.js包管理器)。你可以从Node.js官方网站下载适合你操作系统的安装包进行安装。
- 访问Node.js官方网站(
- 安装完成后,打开终端,输入以下命令检查版本:
node -v npm -v
- 打开终端,使用以下命令创建一个新的Vue项目:
vue create my-dynamic-list-project
- 在创建过程中,你可以选择默认配置或手动配置。
- 进入项目目录,运行以下命令启动本地开发服务器:
npm run serve
- 默认访问地址是
http://localhost:8080/
。
安装Node.js和npm:
创建Vue项目:
启动项目:
二、组件基础
- 在
src/components
目录下创建一个新的.vue
文件,例如DynamicList.vue
。 - 一个基本的
.vue
组件文件包含三个部分:<template>
,<script>
, 和<style>
。
创建组件文件:
组件结构:
<template>
<div class="dynamic-list">
<ul>
<li v-for="item in listData" :key="item.id">
<img :src="item.image" :alt="item.title">
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
listData: [
{
id: 1,
image: 'path/to/image1.jpg',
title: '标题1',
description: '这是描述1'
},
// ...更多数据项
]
};
}
};
</script>
<style scoped>
.dynamic-list ul {
list-style: none;
padding: 0;
}
.dynamic-list li {
margin-bottom: 20px;
}
.dynamic-list img {
width: 100px;
height: auto;
}
</style>
三、组件通信
- 父组件传递数据:
“`vue
## 四、动态组件
对于动态高度不固定的图文列表,我们可以使用Vue的`v-height`指令来确保列表的高度自适应。
```vue
<template>
<div class="dynamic-list">
<ul>
<li v-for="item in listData" :key="item.id" v-height="item.height">
<img :src="item.image" :alt="item.title">
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
</li>
</ul>
</div>
</template>
<script>
export default {
// ...
};
</script>
<style scoped>
/* ... */
</style>
五、插槽(Slot)
<template>
<div class="dynamic-list">
<ul>
<li v-for="item in listData" :key="item.id">
<img :src="item.image" :alt="item.title">
<h3>{{ item.title }}</h3>
<p>{{ item.description }}</p>
<slot name="extra-content"></slot>
</li>
</ul>
</div>
</template>
<script>
export default {
// ...
};
</script>
<style scoped>
/* ... */
</style>
在父组件中,