vue框架实现资讯
Vue 框架实现资讯功能
在 Vue 框架中实现资讯功能通常涉及以下几个关键步骤:
数据获取与处理
通过 API 或静态数据获取资讯列表,使用 Vue 的 data 或 setup 函数存储资讯数据。示例代码:
data() {
return {
newsList: [],
loading: false
}
},
methods: {
async fetchNews() {
this.loading = true;
const res = await axios.get('/api/news');
this.newsList = res.data;
this.loading = false;
}
}
列表渲染与分页
使用 v-for 指令渲染资讯列表,结合分页组件实现数据分页展示。示例代码:
<template>
<div v-if="loading">Loading...</div>
<div v-else>
<div v-for="item in newsList" :key="item.id">
<h3>{{ item.title }}</h3>
<p>{{ item.summary }}</p>
</div>
<Pagination :total="total" @change="handlePageChange"/>
</div>
</template>
资讯详情页
通过路由参数动态加载资讯详情,使用 watch 或 onBeforeRouteUpdate 监听路由变化。示例代码:
export default {
data() {
return {
newsDetail: null
}
},
watch: {
'$route.params.id': {
immediate: true,
handler(newId) {
this.fetchNewsDetail(newId);
}
}
}
}
状态管理
对于复杂应用,可以使用 Vuex 或 Pinia 管理资讯数据状态。示例代码:
// store/modules/news.js
export default {
state: () => ({
news: []
}),
actions: {
async fetchNews({ commit }) {
const res = await api.getNews();
commit('SET_NEWS', res.data);
}
}
}
性能优化
实现懒加载图片、数据缓存等优化措施。示例代码:
<template>
<img v-lazy="item.image" alt="news image">
</template>
搜索与筛选
添加搜索框和筛选器组件,实时过滤资讯列表。示例代码:
computed: {
filteredNews() {
return this.newsList.filter(item =>
item.title.includes(this.searchKeyword)
);
}
}



