[javascript] Vue.js로 블로그 플랫폼 만들기

블로그는 개인 또는 기업이 컨텐츠를 공유하고 소통할 수 있는 플랫폼으로 많이 사용됩니다. Vue.js는 직관적인 문법과 유연한 아키텍처로 웹 애플리케이션을 개발할 수 있는 자바스크립트 프레임워크입니다. 이번 포스트에서는 Vue.js를 사용하여 블로그 플랫폼을 만들어보겠습니다.

1. 프로젝트 설정

우선, 블로그 플랫폼을 만들기 위해 Vue.js 프로젝트를 설정해야 합니다. Vue CLI를 사용하면 간편하게 설정할 수 있습니다.

# Vue CLI 설치
npm install -g @vue/cli

# 새로운 Vue 프로젝트 생성
vue create blog-platform

위 명령어를 실행하면 Vue CLI가 설치되고 새로운 Vue 프로젝트인 “blog-platform”이 생성됩니다.

2. 컴포넌트 구성

블로그 플랫폼을 만들기 위해 다양한 컴포넌트를 구성해야 합니다. 예를 들어, 블로그 포스트 목록, 포스트 상세 페이지, 댓글 기능 등을 구현할 컴포넌트를 만들어야 합니다.


// PostList.vue
<template>
  <div>
    <h2>블로그 포스트 목록</h2>
    <ul>
      <li v-for="post in posts" :key="post.id">
        <router-link :to="{ name: 'PostDetail', params: { postId: post.id } }">
          {{ post.title }}
        </router-link>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      posts: [
        { id: 1, title: '첫 번째 포스트' },
        { id: 2, title: '두 번째 포스트' },
        { id: 3, title: '세 번째 포스트' }
      ]
    };
  }
};
</script>

위 코드는 블로그 포스트 목록을 나타내는 PostList 컴포넌트입니다. v-for 디렉티브를 사용하여 포스트 목록을 동적으로 렌더링하고, router-link 컴포넌트를 통해 포스트 상세 페이지로 이동할 수 있습니다.

3. 라우팅 설정

Vue Router를 사용하여 블로그 플랫폼의 라우팅을 설정해야 합니다. 이를 위해 src/router/index.js 파일을 열고 라우트를 추가해주세요.

import Vue from 'vue';
import VueRouter from 'vue-router';

import PostList from '@/views/PostList.vue';
import PostDetail from '@/views/PostDetail.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/', component: PostList },
  { path: '/post/:postId', component: PostDetail, name: 'PostDetail' }
];

const router = new VueRouter({
  mode: 'history',
  routes
});

export default router;

위 코드는 / 경로에서 PostList 컴포넌트를, /post/:postId 경로에서 PostDetail 컴포넌트를 렌더링하는 라우터 설정입니다. name 속성을 통해 포스트 상세 페이지로 이동할 수 있도록 합니다.

4. API 통신

블로그 플랫폼에서는 서버와의 API 통신을 통해 데이터를 받아오는 것이 필요합니다. 이를 위해 axios를 사용하여 API 호출을 처리할 수 있습니다.

# axios 설치
npm install axios

// PostDetail.vue
<template>
  <div>
    <h2>{{ post.title }}</h2>
    <p>{{ post.body }}</p>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      post: null
    };
  },
  created() {
    this.fetchPost();
  },
  methods: {
    fetchPost() {
      const postId = this.$route.params.postId;
      axios.get(`/api/posts/${postId}`)
        .then(response => {
          this.post = response.data;
        })
        .catch(error => {
          console.error(error);
        });
    }
  }
};
</script>

위 코드는 PostDetail 컴포넌트에서 API를 호출하여 포스트의 상세 정보를 가져오는 예시입니다. created 훅을 사용하여 컴포넌트가 생성되면 API를 호출하고, axios를 통해 서버로부터 데이터를 받아옵니다.

5. 블로그 플랫폼 완성하기

위에서 작성한 컴포넌트와 기능을 조합하여 블로그 플랫폼을 완성할 수 있습니다. 추가적으로 로그인 기능, 댓글 기능 등을 구현할 수도 있습니다. 필요한 기능에 맞게 컴포넌트를 작성하고, API 통신을 통해 데이터를 가져오고 보내는 등의 작업을 수행하면 됩니다.

이렇게 Vue.js를 사용하여 블로그 플랫폼을 만들 수 있습니다. Vue.js의 유연한 특징을 활용하여 원하는 기능과 디자인을 구현할 수 있으며, 빠르고 효율적인 웹 애플리케이션을 개발할 수 있습니다.

참고 자료