Vue.js와 vue-router로 HelloWorld를 찍어보자

지난 해 회사 홈페이지 리뉴얼 할때 SPA기반의 Router를 찾다가 접하게된 vue.js. 처음 느낌은 굉장히 쉽다였다. 그리고 공식 홈페이지도 한글화 되어 있고 쉽게 잘 설명 되어 있다는 것.
모든 언어의 시작인 helloworld를 브라우저에 출력해 보도록 하자.

vue.js

Vue.js 설치

  • Vue.js는 공식CLI 를 제공한다.
  • 프로젝트를 만들고자 하는 디렉토리로 이동한 다음 아래와 같이 입력
    $ npm install --global vue-cli 
    # permission에러가 날경우 sudo로 하자.
    $ vue init webpack hellworld
    # project name, description등 질문이 나오면 그냥 엔터
    # vue-router, ESLint등 설치 묻는다. 난 무조건 다 설치하였다.
    # 질문에 다 대답을 하면 설치가 진행된다.
    
  • npm(Node.js Package Manager)은 Node.js에서 사용가능한 자바스크립트 모듈들을 패키지화시켜 모아놓은곳 이며, cli형식으로 간단하게 설치할 수 있다.
  • webpack이 궁금하다면 여기를 확인하자.
  • 설치가 완료 돼면 helloworld디렉토리가 생성되었을 것이다.
    $ cd helloworld
    $ cat README.md
    

서버 실행 및 화면 확인하기

  • 위와같이 README.md파일을 확인하게 되면 기본적인 사용 방법에 대하여 설명되어 있다.
  • 그럼 개발서버를 실행해보도록 하자.
    $ npm run dev
    블라블라
    I  Your application is running here: http://localhost:8080
    
  • http://localhost:8080으로 실행중이라고 당신의 어플을 실행중이란다. 브라우저로 접속해보자. localhost

HelloWorld 찍어보기

  • hellworld디렉토리 하위에 많은 디렉토리 및 파일이 있지만 일단 src디렉토리에만 집중해보자.
    Kyuui-MacBook-Pro:helloworld lohan$ tree ./src/
    ./src/
    ├── App.vue
    ├── assets
    │   └── logo.png
    ├── components
    │   └── HelloWorld.vue
    ├── main.js
    └── router
      └── index.js
    

브라우져에 나오는 화면은 App.vue에서 시작을 해서 index.js에서 HelloWorld.vue로 Router를 /로 설정을 했기 때문에 위와 같은 화면이 나온다. 그럼 vue파일을 하나 만들어서 화면에 나오도록 해보자.

  • src/comonents에 MyHelloWord.vue파일을 아래와 같이 만들어보자.
      <template>
          <h2>hellowrld!!!</h2>
      </template>
    
  • src/router/index.js에 routes를 추가하자.
      import Vue from 'vue'
      import Router from 'vue-router'
      import HelloWorld from '@/components/HelloWorld'
      import MyHelloWorld from '@/components/MyHelloWorld'
    
      Vue.use(Router)
    
      export default new Router({
        routes: [
          {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
          },
          {
            path: '/myhelloworld',
            name: 'MyHelloWorld',
            component: MyHelloWorld
          }
        ]
      })
    
  • 첫화면에서 MyHelloWorld로 갈 링크가 필요하니 App.vue에서 링크를 추가하자
      <template>
        <div id="app">
          <img src="./assets/logo.png">
          <ul>
            <li><router-link v-bind:to="{ name: 'HelloWorld' }">HelloWorld</router-link></li>
            <li><router-link v-bind:to="{ name: 'MyHelloWorld' }">MyHelloWorld</router-link></li>
          </ul>
          <router-view/>
        </div>
      </template>
    
  • 인덱스와 MyHelloWorld링크를 클릭했을때의 화면이 나온다면 성공 이미지 이미지

  • 주소표시줄의 #이 성가시다면 아래와 같와 같이 src/router/index.js를 수정하자.
      import Vue from 'vue'
      import Router from 'vue-router'
      import HelloWorld from '@/components/HelloWorld'
      import MyHelloWorld from '@/components/MyHelloWorld'
    
      Vue.use(Router)
    
      export default new Router({
        mode: 'history',  //추가
        routes: [
          {
            path: '/',
            name: 'HelloWorld',
            component: HelloWorld
          },
          {
            path: '/myhelloworld',
            name: 'MyHelloWorld',
            component: MyHelloWorld
          }
        ]
      })
    

comments powered by Disqus