"new 연산자를 사용해야만 함수 내부의 내용을 변수에 대입 할 수 있다."
function structure(first, last) {
this.first = first;
this.last = last;
this.printer = function () {
return this.first + ' ' + this.last;
};
}
var building = new structure('삼성','빌딩')
console.log(building.printer())
function structure(first, last) {
this.first = first;
this.last = last;
this.printer = function () {
return this.first + ' ' + this.last;
};
}
//var building = new structure('삼성','빌딩')
var building = structure('삼성','빌딩') //new 연산자를 제거하였습니다.
console.log(building.printer())
<html>
<head>
<link rel="stylesheet" href="index.css">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
{{ message }}
</div>
<script src="index.js"></script>
</body>
</html>
var app = new Vue({ // new 를 통해 객체로 넘김
el: '#app', //id 가 app인 요소에 적용
data: {
message: 'Hello Vue!'
}
});
app.message = 'I have changed the data!';
// 객체로 접근해서 내부 데이터 변경 가능
v-
로 시작하는 태그는 뷰 태그이다.
<div id="app-2">
<span v-bind:title="message">
Hover your mouse over me for a few seconds
to see my dynamically bound title!
</span>
</div>
<div id="app-3">
<span v-if="seen">Now you see me</span>
</div>
var app3 = new Vue({
el: '#app-3',
data: {
seen: true
}
})
<div id="app-4">
<ol>
<li v-for="todo in todos">
{{ todo.text }}
</li>
</ol>
</div>
var app4 = new Vue({
el: '#app-4',
data: {
todos: [
{ text: 'Learn JavaScript' },
{ text: 'Learn Vue' },
{ text: 'Build something awesome' }
]
}
})
// Define a new component called todo-item
Vue.component('todo-item', {
template: '<li>This is a todo</li>'
})
var app = new Vue(...)
<ol>
<!-- Create an instance of the todo-item component -->
<todo-item></todo-item>
</ol>
컴포넌트를 태그처럼 사용 가능 하다.
👉🏻 https://v2.vuejs.org/v2/guide/syntax.html
가장 많이 사용, 변경 가능
<span>Message: {{ msg }}</span>
변경 불가능
<span v-once>This will never change: {{ msg }}</span>
<div>{{ mustaches }}<div>
<div v-bind:id="dynamicId"></div>
mustaches는 html 요소 내부에는 사용 불가능하다. 내부에서 사용할려면 directive 방식으로 사용.
{{ number + 1 }}
{{ ok ? 'YES' : 'NO' }}
{{ message.split('').reverse().join('') }}
<div v-bind:id="'list-' + id"></div>
자바스크립트 활용 쉽게 뷰는 위의 구문을 모두 지원해준다.
<!-- this is a statement, not an expression: -->
{{ var a = 1 }}
<!-- flow control won't work either, use ternary expressions -->
{{ if (ok) { return message } }}
그...아무리 강력해도 위와 같은 구문은 안됨..!
<!-- full syntax -->
<a v-bind:href="url"> ... </a>
<!-- shorthand -->
<a :href="url"> ... </a>
<!-- shorthand with dynamic argument (2.6.0+) -->
<a :[key]="url"> ... </a>
<!-- full syntax -->
<a v-on:click="doSomething"> ... </a>
<!-- shorthand -->
<a @click="doSomething"> ... </a>
<!-- shorthand with dynamic argument (2.6.0+) -->
<a @[event]="doSomething"> ... </a>
아래의 3가지 방법중 하나만 설치하거나 설정하면 된다.
npm install --save axios
yarn 으로 설치하는 경우는 아래의 명령어를 입력을 하면 됩니다.
yarn add axios
직접 웹페이지의 영역 안에 입력을 해도 됩니다.
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
axios는 REST을 별칭을 이용해서 쉽게 통신을 할 수 있습니다.
불러오기 : axios.get(url[, config])
입력하기 : axios.post(url[, data[, config]])
수정하기 : axios.patch(url[, data[, config]])
삭제하기 : axios.delete(url[, config])
GET은 서버로 부터 데이터를 가져오는데 사용합니다. 아마도 가장많이 사용하는 명령어 일 것입니다.
서버 주소인 /api/data로 부터 값을 불러올 때 사용합니다.
axios.get('/api/data')
.then(res => {
// 불러온 값을 Console에 뿌려줍니다.
console.log(res.data)
})
axios 요청 시 파마메터 정보(/api/todos/1)를 같이 입력하여 정보를 얻어 올 수 있습니다. 위의 것이 리스트를 불러온다면 지금 아래의 요청은 하나의 상세정보를 불러온다고 보시면 됩니다.
axios.get('/api/data/1')
.then(res => {
console.log(`status code: ${res.status}`);
console.log(`headers: ${res.headers}`)
console.log(`data: ${res.data}`)
})
axios 요청 시 파라메터 정보가 아니라 메소드의 두 번째 인자인 config 객체로 요청값을 넘길 수 있습니다.
axios.get('/api/data', {
params: { title: 'vue.js는 조으다.' },
headers: { 'X-Api-Key': 'my-api-key' },
timeout: 1000 // 1초 이내에 응답이 없으면 에러 처리
}).then(res => {
console.log(res.data)
})
/api/data에 값을 입력 할 때 사용합니다.
서버의 데이터 리스트의 마지막에 지금 넘기는 정보를 추가 합니다.
axios.post('/api/data', {title: "vue.js는 조으다."})
.then(res => {
console.log(res.data)
})
/api/data/3에 값을 입력 할 때 사용합니다.
서버의 데이터 리스트 중 3에 해당 하는 값의 title를 수정합니다.
axios.patch('/api/data/3', {title: "vue.js는 조으다."})
.then(res => {
console.log(res.data)
})
/api/data/3에 값을 삭제 할 때 사용합니다.
서버의 데이터 리스트 중 3에 해당 하는 값을 삭제 합니다.
axios.delete('/api/data/3')
.then(res => {
console.log(res.data)
})
axios로 파일도 업로드 할 수 있습니다.
먼저 HTML로 아래와 같이 form문을 작성합니다.
여기에서 ref="photoimage"는 중요한 역할을 하니 빼먹으면 안됩니다.
<form method="post" enctype="multipart/form-data" action="/contant/124/photo">
<input type="file" name="photo" ref="photoimage">
<input type="submit">
</form>
FormData() 객체를 생성하고 this.$refs.photoimage과 같이 ref옵션을 이용해서 필드에 직접 참조를 하여 이미지파일을 가져오고 업로드를 할 수 있습니다.
var data = new FormData();
var file = this.$refs.photoimage.files[0];
data.append('photo', file);
axios.post('/api/data/' + this.no + '/photo', data)
.then((res) => {
this.result = res.data;
})
.catch((ex) => {
console.log('사진업로드 실패', ex);
});