vue实现发布文章
Vue 实现发布文章功能
1. 搭建基础项目结构 使用 Vue CLI 创建项目,安装必要依赖(如 axios、vue-router)。文章发布功能通常需要以下组件:
- 文章表单组件(ArticleForm.vue)
- 文章列表组件(ArticleList.vue)
- 路由配置(router/index.js)
2. 创建文章表单组件 在 ArticleForm.vue 中设计表单,包含标题、内容、分类等字段:
<template>
<form @submit.prevent="submitArticle">
<input v-model="article.title" placeholder="标题">
<textarea v-model="article.content" placeholder="内容"></textarea>
<button type="submit">发布</button>
</form>
</template>
<script>
export default {
data() {
return {
article: {
title: '',
content: ''
}
}
},
methods: {
submitArticle() {
this.$emit('article-submitted', this.article)
}
}
}
</script>
3. 实现数据提交 通过 axios 将数据发送到后端 API:
// 在父组件或单独的服务文件中
import axios from 'axios'
const api = axios.create({
baseURL: 'https://your-api-endpoint.com'
})
export default {
methods: {
async publishArticle(article) {
try {
const response = await api.post('/articles', article)
console.log('发布成功:', response.data)
} catch (error) {
console.error('发布失败:', error)
}
}
}
}
4. 添加表单验证 使用 Vuelidate 或手动验证:
// 手动验证示例
methods: {
validateArticle() {
if (!this.article.title.trim()) {
alert('标题不能为空')
return false
}
return true
},
submitArticle() {
if (this.validateArticle()) {
this.publishArticle(this.article)
}
}
}
5. 处理文章列表展示 创建 ArticleList.vue 显示已发布文章:

<template>
<div v-for="article in articles" :key="article.id">
<h3>{{ article.title }}</h3>
<p>{{ article.content }}</p>
</div>
</template>
<script>
export default {
props: ['articles']
}
</script>
6. 集成富文本编辑器 安装 vue-quill-editor 等富文本插件:
npm install vue-quill-editor
在组件中使用:
<template>
<quill-editor v-model="article.content"></quill-editor>
</template>
<script>
import { quillEditor } from 'vue-quill-editor'
export default {
components: { quillEditor }
}
</script>
7. 添加状态管理(可选) 对于复杂应用,可使用 Vuex 管理文章状态:

// store/modules/articles.js
const actions = {
async publishArticle({ commit }, article) {
const response = await api.post('/articles', article)
commit('ADD_ARTICLE', response.data)
}
}
8. 实现路由跳转 发布成功后跳转到文章列表:
// 在发布方法中
this.$router.push('/articles')
9. 处理图片上传(可选) 添加图片上传功能:
methods: {
async uploadImage(file) {
const formData = new FormData()
formData.append('image', file)
const response = await api.post('/upload', formData)
return response.data.url
}
}
10. 添加草稿功能(可选) 扩展 article 对象添加状态字段:
data() {
return {
article: {
title: '',
content: '',
status: 'draft' // 或 'published'
}
}
}
注意事项
- 表单需要添加防重复提交机制
- 敏感内容需要做 XSS 防护
- 移动端需考虑响应式布局
- 生产环境建议添加加载状态和错误提示
以上实现可根据实际需求调整,如需用户认证,需在请求头中添加 token。后端 API 需要对应实现文章创建接口。






