본문 바로가기
개발 공부 Today I Learned

[국비 86일차 TIL] vue 기초 수업

by 개발자신입 2024. 3. 27.
반응형

vue

<!DOCTYPE html>
<html>
	<head>
		<title></title>
		<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
	</head>
	<body>
		<h1>연습 1</h1>
		<div id="app">
			{{ message }}
		</div>
		<button onclick="num()">넘버 실행</button>
	<script>
		var app = new Vue ({ 
			el:'#app',
			data : {
				message:'Hello Vue'
			}
		});
		let num=function(){
			let num = 10;
			if(num == 10){
				//alert('true');
				console.log('true');
			}
		}

 

		var n = 10;
		let nn = 'A'; // ES6
		const nu = 100; // const 변수는 초기값을 변경할 수 없지만 const 객체/배열은 그 요소를 변경할 수 있음.
		// 변수값 재할당 x, 내부요소 변경 o

		// nu =10; -> error : Uncaught TypeError: Assignment to constant variable.

		const group = {name : "댕이", age : 6}
		group.age=100;

		console.log(group.age);
		console.log(group.name);

 

		// 변수는 자바와 동일, 연산자는 자바와 비슷, 산술연산자, 문자 연결 연산자 +
		console.log("Hi" + "JS"); // HiJS
		// 값 대입 var v = 10;
		// 비교연산자
		// 1 > 7
		// 논리 연산자
		// true & false
		// 삼항연산자 = 조건문 ? 참 : 거짓

		// 화살표 함수 =>
		// let 함수이름 = (파라미터..) => 명령문

		check = () => {
			console.log('check');
		}

		check();
		// 화살표 함수 : ES6때 도입, function 키웓로 만들어지는 것보다 화살표를 사용해 함수를 더 간단히 표현
		// 콜백함수 : 파라미터로 함수를 전달받아 내부에서 실행하는 함수

		function timeCheck(){
			setTimeout(() => {
				console.log('timeCheck 함수 실행됨');
			}, 3000);
		}

		function lastCheck(){
			console.log('lastCheck 함수 실행됨');
		}

		timeCheck();
		lastCheck();
//--------------------- callback 함수 -------------------------------//

		function timeCheck(callback){
			setTimeout(() => {
				console.log('timeCheck 함수 실행됨');
				callback();
			}, 3000);
		}

		function lastCheck(){
			console.log('lastCheck 함수 실행됨');
		}

		timeCheck(lastCheck);

		// promise : 대기, 이행, 실행
		
		let promise = new Promise(function (resolve, reject){
			resolve(value);
			reject(err);
		});

		promise.then(function(value){ // 성공
 	 	    console.log(value);
  		 });

		   promise.catch(function(err) {
 		   // 실패 시 수행할 작업
		});
		// 콜백 함수와 프로미스의 단점을 극복하고 가독성을 높인 async, await
		// async : 함수 앞에 붙임
		// await : async함수 내에 작성함. 동기식처럼 프로미스 처리가 끝날 때까지 기다림

		async function print1(){
			let promise2 = new Promise(function (resolve, reject){
				setTimeout(() => resolve('성공'), 1000);
			});

			let result = await promise2;
			console.log(result);
		}

		print1();

		// 예외처리
/* 		async function 함수(){
			try {
				await 실행 함수();
			} catch (error) {
				예외 발생 시 처리할 내용;
			}
		} */

 

		// 배열
		// arr01 : 1,2,3,4,5
		const arr01 = [1,2,3,4,5];
		alert(arr01[0]); // 1
		alert(arr01.length); // 5

		arr01.push(6);
		console.log(arr01);

        arr01.unshift(10);
        console.log(arr01);

	// [10, 1, 2, 3, 4, 5, 6]
		// pop = 마지막 요소를 꺼낸다. (= 배열요소 삭제)
		console.log(arr01.pop()); // 6
		console.log(arr01); 
		// 결과 => [10, 1, 2, 3, 4, 5]

		// pop push = stack
		
		// shift() = 배열이 첫번째 요소를 삭제함.

		// splice() = 배열에서 특정 위치에 새로운 요소를 추가 / 특정 요소에 있는 값을 수정
		// 배열명.splice(추가/삭제위치, 삭제수량, 추가요소);

		arr01.splice(0, 0, 100);
		console.log(arr01); // [100, 10, 1, 2, 3, 4, 5]

		arr01.splice(1, 1, 200);
		console.log(arr01); // [100, 200, 1, 2, 3, 4, 5]

		// 맨 뒤에 있는 요소를 삭제해서 [100, 2, 3, 4]
		arr01.splice(6,1);
		console.log('삭제 전 :' + arr01);
		arr01.splice(2,1);
		console.log('삭제 후 :' + arr01);


vue 패턴

 

MVVM패턴

Model - View - ViewModel

  • Model : 데이터
  • View : UI담당
  • ViewModel : 상태, 동작을 정의, 데이터 바인딩

vue는 재사용할 수 있는 UI를 묶어 화면을 컴포넌트로 구성

독립적인 기능, 상태를 가질 수 있게 하고 필요 시 컴포넌트를 조합하여 사용하는 템플릿 기반

 

vue create

 

터미널 - 새 터미널에서 npm run serve

 

-> localhost:8080 접속 시 화면

 

 

 

vue 인스턴스의 생명 주기

 

 

<template>
  <div>
    <h1>뷰 연습~</h1>
    이름 : {{ name }}<br>
    이름 : <span v-text="name"></span> <br>
    이름 : <span v-html="name + '<br>' + '같이 사용함'"></span>
    나이 : {{ human.age }}<br>
    주소 : {{ human.addr }}<br>
    <div v-bind:id="test">없어도 됨</div>
    <div v-bind:class="test">없어도 됨</div>
  </div>
</template>

<script>

export default {
  name: 'App',
  components: { },

  data(){
    return{
      test : 'test',
      name : '사탕',
      human : {name : '캔디', age : 7, addr : '비밀'}
    }
  }
}
</script>

 

반응형

댓글