작업 노트

vue Project 구조 본문

Vue 프로젝트 진행하기/Vue 처음 해봤을때

vue Project 구조

달빛가면 2020. 9. 25. 09:52

위 그림을 보자 정말 어렵게 생각했다...

우리가 javascript를 사용했을 때 필요한 부분 다 <script src='....js'> 이렇게 js파일 또는 lib파일들 import 하며 코딩을 했을 거다 하지만 이 Vue는 알고 있어야 할 게 있다 SPA(Single Page Applcation) <---- 이거다 한 페이지 안에서 모든 걸 다 할 거라고 목표를 세워 만든 프레임워크다.

그렇다 한 page에 다 설정해서 에 페이지를 나가지 않는 이상 다 이페이지에서 처리한다 그래서 그림을 보면 2번 의 main.js에 우리가 사용할 lib, module, js. css 등등 여기다 다 import 하면 된다. 난 javascript만 하던 이라서 그런지 처음에 componet에 하나하나 import 할 생각밖에 안 났다 ㅡ.ㅡ 왜냐 SPA를 이해를 못했기 때문이다

그러니 처음 접해본 사람들은 저 그림을 잘 보고 참고 하길 바란다.

그리고 여기서 router이건 대부분 사람들이 기능알 알 거다. 그래 이거 그냥 이 녀석이 path의 페턴을 보고 component들을 보여주는 역할을 하는 거다. 요 router의 기능은 많다, 라우터마다 ID를 줄 수도 있고, 라우터의 자식 라우터를 만들 수도 있고 알죠? 궁금하면 구글링이다 ㅋㅋ router.vuejs.org/kr/

 

소개 | Vue Router

소개 버전 정보 TypeScript 사용자는 vue-router@3.0+와 vue@2.5+를 사용하세요. Vue 라우터는 Vue.js 의 공식 라우터입니다. Vue.js를 사용한 싱글 페이지 앱을 쉽게 만들 수 있도록 Vue.js의 코어와 긴밀히 통합

router.vuejs.org

 

다음엔 진짜 내가 이해하기 힘들었던 개념 ㅡ.ㅡ 값 전달 되시겠다 아 ... 진짜 하루 동안 고심이 많았다 ㅋㅋㅋ

<template>

    <div>

        <h1>Wellocom to {{ title2 }}</h1>

        <input type="text" v-model="input1"/> <!-- values -> v-model은 양방향이다.-->

        <button type="button" @click="getData">Get</button>

        <button type="button" @click="setData">Set</button>

 

        <select class="form-control" v-model="region" @change="onChange">

            <option :key="i" :value="d.v" v-for="(d,i) in options">{{ d.t }}</option>

            <!-- html에 :를 사용하면 데이터에 접근, html밖에선 {{ }} 이걸로 접근 -->

        </select>

        <table class="table table-bordered" v-if="tableShow">

            <!-- v-if는 조건이 안맞으면 화면에 렌더링 자체를 하지 않음 렌더링행위 자체를 계속적으로 리소스가 소모된다. ex : 특정조건-->

            <!-- v-show는 조건이 안맞아도 화면에 렌더링을 한다. style일로만 보여주고 안보여주고 하기 때문에 리소스 소모가 적다. ex : TAB-->

            <tr v-for="(diin options" :key="i">

                <td>{{ d.v }}</td>

                <td>{{ d.t }}</td>

            </tr>

        </table>

        <canvas style="border:1px solid red;" ref="canvas"></canvas>

    </div>

</template>

 

<script>

export default {

    name: 'home',

    data() {

        return {

            title: "테스트",

            title2: "Seoul",

            input1: "abcd",

            options: [

                {v:"S"t:"Seoul"},

                {v:"J"t:"Jeju"},

                {v:"B"t:"Busan"},

            ],

            region : "J",

            tableShow : false,

            myImage: "https://konvajs.org/assets/yoda.jpg",

        }

    },

    methods: {

        getData() {

            alert(this.input1)

        },

        setData() {

            this.input1 = "12345"

        },

        onChange() {

            alert(this.region)

            this.tableShow = true

        },

        func(){

            let cvn = this.$refs.canvas;

            let ctx = cvn.getContext("2d");  

            let bg = new Image();

            bg.src = this.myImage;

            bg.onload = function() {

                    ctx.drawImage(bg0 ,0);

            };

        }

    },

    mounted(){

        this.func();

    },

    watch: {

        // 특정 data가 변경을 감지한다. data의 변수 명과 똑같아야 한다.

        // input1 data가 변경 되면 호출된다.

        input1() {

            console.log("=================="this.input1)

        }

    },

}

</script>

정말 기본적이 소스다. 근데 이게 난 정말 변수 설정하고 가져오고 가공하고 다시 넣고 정말 많은 도움을 줬다. 이건 해당 component에서만 사용한다.

일단 data () 이걸 보자 처음엔 이게 뭘까....라는 생각을 했다. 왜냐 좀 찾아봐도 변수다.... 지정한다... 등등 말이 많았는데 ㅡ.ㅡ 난?????????이었다 이게 뭔데 ㅡ.ㅡ라고 쉽게 생각하자 이건 전역 변수다!!! 아닐 수도 있다 하지만 javascript를 자주 사용하던 사람이라면 뭔 말인지 알 것이다 저 data에 선언된 변수들은 해당 Component에서 어디서든 어느 함수든 뭐든 간에 다 접근이 가능하다는 이야기다. 하.... 이 엄청난 편안함.... 이건 <script></script> 안에서만 접근이 다 되는 게 아니다 그냥 해당. vue화면에서 다 접근이 가능하다. 이게 중요했다. Vue화면에서 그냥 다 접근이 가능하다

이런 생각을 가지고 소스를 한번 살살 살펴보면 어떻게 해야 할지 감이 올 것이다.

다음엔 Vue에서 <canvas>태그에 대해 끄적여 봐야겠다.

 

'Vue 프로젝트 진행하기 > Vue 처음 해봤을때' 카테고리의 다른 글

Vue Hellow World찍다.  (0) 2020.09.24
Comments