用vue写一个个人博客
时间: 2024-05-29 18:03:18 浏览: 15
首先,你需要安装 Vue CLI。你可以在终端中使用以下命令进行安装:
```
npm install -g @vue/cli
```
接下来,你可以使用 Vue CLI 创建一个新的项目。使用以下命令创建一个新的项目:
```
vue create my-blog
```
这将创建一个名为 "my-blog" 的新项目。安装完成后,进入项目目录并启动开发服务器:
```
cd my-blog
npm run serve
```
现在你可以开始编写你的博客了。首先,你需要创建一个页面来展示你的博客文章。在 "src/views" 目录下创建一个新的文件 "Blog.vue"。在这个文件中,你可以使用 Vue 的模板语法来定义你的页面布局和内容。例如:
```
<template>
<div>
<h1>My Blog</h1>
<ul>
<li v-for="post in posts" :key="post.id">
<router-link :to="'/blog/' + post.id">{{ post.title }}</router-link>
</li>
</ul>
</div>
</template>
<script>
export default {
data() {
return {
posts: [
{ id: 1, title: "My first blog post", content: "Lorem ipsum dolor sit amet..." },
{ id: 2, title: "My second blog post", content: "Lorem ipsum dolor sit amet..." },
{ id: 3, title: "My third blog post", content: "Lorem ipsum dolor sit amet..." }
]
}
}
}
</script>
```
在这个例子中,我们创建了一个简单的博客页面,显示了一个包含所有博客文章标题的列表。当用户点击某个标题时,页面将自动导航到该文章的详细页面。
接下来,你需要创建一个单独的页面来显示每篇博客文章的详细内容。在 "src/views" 目录下创建一个新的文件 "BlogPost.vue"。在这个文件中,你可以使用模板语法来定义文章的布局和内容。例如:
```
<template>
<div>
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
</div>
</template>
<script>
export default {
data() {
return {
post: {}
}
},
mounted() {
const postId = this.$route.params.id
this.post = this.$store.getters.getPostById(postId)
}
}
</script>
```
在这个例子中,我们创建了一个名为 "BlogPost" 的组件,用于显示单篇博客文章的详细内容。我们使用了 Vue 的生命周期钩子 "mounted" 来获取文章的数据,并将其显示在页面上。
最后,你需要创建一个路由器来管理你的博客页面。在 "src/router" 目录下创建一个新的文件 "index.js"。在这个文件中,你可以定义所有的路由规则。例如:
```
import Vue from 'vue'
import Router from 'vue-router'
import Blog from '@/views/Blog.vue'
import BlogPost from '@/views/BlogPost.vue'
Vue.use(Router)
export default new Router({
mode: 'history',
routes: [
{
path: '/',
name: 'Blog',
component: Blog
},
{
path: '/blog/:id',
name: 'BlogPost',
component: BlogPost
}
]
})
```
在这个例子中,我们定义了两个路由规则。第一个规则用于显示博客页面,第二个规则用于显示单篇博客文章的详细内容。我们使用了动态路由参数 ":id" 来指定文章的ID号。
现在你已经完成了一个简单的个人博客的创建。你可以在终端中启动服务器:
```
npm run serve
```
然后在浏览器中访问 "http://localhost:8080" 来查看你的博客。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)