IT/development212 [Vue.js] vue.js์ ๋ ๋๋ง ๋ฐฉ์๊ณผ ๊ธฐ์กด ๋ฐฉ์์ ์ฐจ์ด์ (feat. ajax) ๋ชฉ์ฐจ ajax๋ก ๋ฐ์ดํฐ ์กฐํ ์ reactivity๋ฅผ ํ์ฉํ lib๋ framework๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ธฐ์กด ๋ฐฉ์(javascript/jQuery)์ ๊ฒฝ์ฐ ํ๋ฉด์์ ajax๋ก ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ๊ทธ๋ฆด ๋ถ๋ถ์ ํ๊ทธ๋ง ๋ฏธ๋ฆฌ ์ ์ํด ๋๊ณ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ ํ์ ์คํฌ๋ฆฝํธ๋จ์์ ๋์ ์ผ๋ก ํ๊ทธ๋ฅผ ๋ง๋๋ ๋ก์ง์ ์์ฑํด์ ๋ถ์๋ค.(์๋ ์ฐธ์กฐ) ๊ธฐ์กด๋ฐฉ์ html ์ฃผ์๋ก ์๋ฒ ์ฌ์๋ช ์ง๊ธ ์ง์ฑ ์ ํ๋ฒํธ ์ด๋ฉ์ผ script //table์ ๋ฐ์ดํฐ ๊ทธ๋ฆฌ๋ ๋ถ๋ถ const targetTbody = "addressbookBody"; if(data.list != null && data.list.length > 0) { // foreach start for (let i = 0; i < data.list.length; i++) { htm.. IT/development 2023. 7. 30. [Vue.js] watch vs computed(๋ฐ์ดํฐ ๋ณํ ๊ฐ์ง) ๋ชฉ์ฐจ ๋ฐ์ดํฐ ๋ณํ ๊ฐ์งํ๋ ์ ์ ๋์ผํ์ง๋ง ์ฉ๋๊ฐ ๋ค๋ฆ watch ๋ฐ์ดํฐ์ ๋ณํ๋ฅผ ๊ฐ์งํ๊ณ ์ํ๋ ๋ก์ง์ ์ํํ๋๋ฐ ์ฌ์ฉ ์ฃผ๋ก ๋ฐ์ดํฐ ๋ณํ ์ ๋น๋๊ธฐ์ ๋ก์ง ๋ฑ ๋ณต์กํ ๋ก์ง ์ํ ์ ์ฌ์ฉ๋จ ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ, ๋ณ๊ฒฝ ๋ ๋ฐ์ดํฐ๋ฅผ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์์ ์ฒ๋ฆฌ ๊ฐ๋ฅ ์นด์ดํธ: {{ count }} ์ฆ๊ฐ new Vue({ el: '#app', data: { count: 0 }, methods: { increment() { this.count++; } }, watch: { //๋งค๊ฐ๋ณ์๋ก ๋ณ๊ฒฝ๋ ๊ฐ, ๋ณ๊ฒฝ ์ ๊ฐ์ ๋ฐ์ ์ ์์ count(newValue, oldValue) { console.log('count๊ฐ ๋ณ๊ฒฝ๋์์ต๋๋ค. ์ด์ ๊ฐ: ${oldValue}, ์ ๊ฐ: ${newValue}'); //ajax ๋ก์ง ์๋ต.... IT/development 2023. 7. 30. [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ axios ํต์ post ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์ ์ก #ajax ํต์ ์ํ lib ์ค์น npm i axios App.vue id: password: login get๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ ์กฐํ ์กฐํ queryString(?empId=dev&empNm=๋ก๋ค์ฃผ&empEmail=dev@naver.com) ์ถ๊ฐ ์ ์๋์ฒ๋ผ ์ฌ์ฉ const data = { empId: this.empId, empNm: this.empNm, empEmail: this.empEmail } //2๋ฒ ์งธ ์ธ์๊ฐ์ ์์์ ๋ง๋ object ์ถ๊ฐ axios.get(url, { data }) reference: https://www.inflearn.com/course/lecture?courseSlug=age-of-vuejs&unitId=21471&tab=curriculu.. IT/development 2023. 7. 29. [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ event emit ์์ฑ ์ด์ฉ App.vue app AppHeader.vue {{ propsdata }} send reference: https://www.inflearn.com/course/lecture?courseSlug=age-of-vuejs&unitId=21466&tab=curriculum ํ์ต ํ์ด์ง www.inflearn.com IT/development 2023. 7. 29. [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ props ์์ฑ ์ด์ฉ App.vue app AppHeader .vue {{ propsdata }} reference: https://www.inflearn.com/course/lecture?courseSlug=age-of-vuejs&unitId=21465&tab=curriculum ํ์ต ํ์ด์ง www.inflearn.com IT/development 2023. 7. 29. [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ ์ปดํฌ๋ํธ ์ฌ์ฉ ํ์ ์ปดํฌ๋ํธ import ํ ์ฌ์ฉ App.vue app AppHeader.vue Welcome to My App reference: https://www.inflearn.com/course/lecture?courseSlug=age-of-vuejs&unitId=21464&tab=curriculum ํ์ต ํ์ด์ง www.inflearn.com 2023.07.29 - [IT/development] - [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ props ์์ฑ ์ด์ฉ [Vue.js] ์ฑ๊ธ ํ์ผ ์ปดํฌ๋ํธ์์ props ์์ฑ ์ด์ฉ App.vue app AppHeader .vue {{ propsdata }} yaga.tistory.com 2023.07.29 - [IT/development] - [Vue.js] ์ฑ๊ธ ํ์ผ .. IT/development 2023. 7. 29. [Vue.js] Vue CLI(Command Line Interface) ๋ชฉ์ฐจ ํฐ๋ฏธ๋ ๋ช ๋ น์ด๋ฅผ ํตํด Vue.js ๊ฐ๋ฐํ๊ฒฝ์ ๋ ์ฝ๊ฒ ํด์ฃผ๋ ๋๊ตฌ๋ผ๊ณ ๋ณด๋ฉด ๋๊ณ ์๋์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ์๋ฐ๋ก ๋ฐ์ง๋ฉด ๋ ๊ฑฐ์ ์คํ๋ง์ ์ฌ์ฉํ๋ค ์คํ๋ง๋ถํธ๋ฅผ ๋ง๋ ๊ธฐ๋ถ์ธ ๋ฏ ํ๋ก์ ํธ ์์ฑ ๊ฐ๋ฐ์๋ฒ ์คํ ํ๋ก๋์ ๋น๋ ์ถ๊ฐ ํ๋ฌ๊ทธ์ธ ์ค์น vue.js์ ๊ธฐ๋ณธ ์ค์ ๋ฐ ๊ตฌ์ฑ์ ์ฝ๊ฒ ๋ณ๊ฒฝํ ์ ์๋ ์ค์ ํ์ผ๊ณผ ์ต์ ์ ๊ณต โป ์ฌ์ ์ npm ์ต์ ๋ฒ์ (LTS ๊ถ์ฅ) ์ค์น ๋์ด ์์ด์ผ ํจ ์ค์น(npm ๋๋ yarn์ผ๋ก ์ค์น) ๐ npm install -g @vue/cli # OR yarn global add @vue/cli vue project ์์ฑ ๐ vue create my-project#(์์ฑํ ํ๋ก์ ํธ ๋ช ) # OR vue ui vue project๋ฅผ ์์ฑํ ๊ฒฝ๋ก๋ก ์ด๋ ํ ๋ช ๋ น์ด ์ ๋ ฅ ์ ํ๋ฆฌ์ ์.. IT/development 2023. 7. 29. [Vue.js] ๋ทฐ ๋๋ ํฐ๋ธ(v-๋ก ์์ํ๋ ์์ฑ๋ค์ ์๋ฏธ) ๋ชฉ์ฐจ v-bind(:์ฝ๋ก ๋ฐ์ธ๋ฉ์ผ๋ก ์ค์ ๊ฐ๋ฅ) {{ num }} ๊ฒฐ๊ณผ v-if(์กฐ๊ฑด๋ฌธ) ๊ด๋ฆฌ์ ์ฌ์ฉ์ ๊ทธ ์ธ new Vue({ el: '#app', data: { auth: '๊ด๋ฆฌ์', } }) ๊ฒฐ๊ณผ ๊ฐ๋ฐ์ vue๋๊ตฌ์์ data ๋ณ๊ฒฝ ์ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋จ v-show(show, hide) ๊ด๋ฆฌ์ ์ฌ์ฉ์ ๊ทธ ์ธ ๊ด๋ฆฌ์ js์ฝ๋๋ ์์ ๋์ผ ๊ฒฐ๊ณผ v-model(:์ฝ๋ก ๋ฐ์ธ๋ฉ์ผ๋ก ์ค์ ๊ฐ๋ฅ)(๋ฐ์ดํฐ ๋๊ธฐํ) {{ userName }} new Vue({ el: '#app', data: { userName: '', } }) //์๋์ฒ๋ผ javascript๋ jQuery๋ฅผ ์ฌ์ฉํด์ dom์ ์ ๊ทผํด์ ๋ณ๊ฒฝํ ํ์๊ฐ ์์ //let userName = $("#userName").val(); //let userName.. IT/development 2023. 7. 27. [Vue.js] ajax api ํธ์ถ(feat. axios) get users {{ users }} ๊ฒฐ๊ณผ IT/development 2023. 7. 27. [Vue.js] event emit(์์ → ๋ถ๋ชจ) ํ์(์์)์ปดํฌ๋ํธ์์ ์์(๋ถ๋ชจ) ์ปดํฌ๋ํธ๋ก ๋ฐ์ดํฐ ์ ๋ฌ ์ ์ฌ์ฉํ๋ ์์ฑ //ํ์์ปดํฌ๋ํธ์ธ app-header์ click ์ด๋ฒคํธ(v-on:click์ @click์ผ๋ก ํํ ๊ฐ๋ฅ)๋ฅผ ์ค์ let appHeader = { template: 'click me', //methods ์์ฑ์ ๋ฆฌ๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์์ฑ ํ this.$emit('์ด๋ฒคํธ๋ช ')์ผ๋ก ์ด๋ฒคํธ ๋ฐ์ ์ํด //ํด๋น ์ด๋ฒคํธ๋ ๋ถ๋ชจ ์ปดํฌ๋ํธ์์ ๊ฐ์งํด์ ์ฒ๋ฆฌ ๊ฐ๋ฅ methods: { passEvent: function() { this.$emit('pass'); } }, } new Vue({ el: '#app', components: { 'app-header': appHeader, }, }) ๊ฒฐ๊ณผ ๋ฒํผ ํด๋ฆญ ์ pass๋ผ๋ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ ๊ฒ ํ์ธ.. IT/development 2023. 7. 26. ์ด์ 1 ยทยทยท 5 6 7 8 9 10 11 ยทยทยท 22 ๋ค์