javascript42 [JavaScript] htmlToPdf convert(feat. html2pdf) ๋ชฉ์ฐจ javascript/jQuery ๊ธฐ๋ฐ Hello, PDF! This is an example of converting HTML to PDF using html2pdf.js javascript/Vue.js ๊ธฐ๋ฐ Hello, PDF! This is an example of converting HTML to PDF using html2pdf.js convert ์จ๊น ํญ๋ชฉ PDF ๋ณํ ์์ ์จ๊น ํญ๋ชฉ์ ๋ฒํผ ํด๋ฆญ ์ ์ ์ ๋ณด์ด๊ฒ ํด์ PDF ๋ณํ ํ ๋ค์ด๋ก๋ ํ ๋ค์ ์จ๊น์ฒ๋ฆฌ ํ๋ ์์ Hello, PDF! This is an example of converting HTML to PDF using html2pdf.js convert ๊ฒฐ๊ณผ ์์ฝ๋ ์๋ํฐ์ ๋ถ์ฌ ๋ฃ๊ณ ์คํํ๋ฉด pdf ๋ค์ด๋ก๋ ์ฐฝ ํ์๋จ ref.. IT/development 2023. 8. 26. [JavaScript] ํ ํ๋ฆฟ ๋ฌธ์์ด ์ฌ์ฉ๋ฒ(feat. '(๋ฐฑํฑ)) javascript์์ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํด์ ๋ ๊ฐ๋ ์ฑ ๋์ ์ฝ๋๋ฅผ ์์ฑ ํ ์ ์๋ค. ์ ๋ ์ฝ๋๋ ๋์ผํ ๊ธฐ๋ฅ์ ์ํํ๋ค. ํ์ง๋ง ์ผ์ชฝ ํ ํ๋ฆฟ ๋ฌธ์์ด์ ์ฌ์ฉํ ๊ฒฝ์ฐ ๊ฐ ๋ ๊ฐ๋ ์ฑ์ด ์ข๋ค. ๋ณ์์ ๋ฌธ์์ด ๊ตฌ๋ถ์ด ์ ๋๋ค. ํ ํ๋ฆฟ ๋ฌธ์์ด์ ๋ฐฑํฑ(`)์์ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํ๋ค. ๋ฐฑํฑ์ ํค๋ณด๋ 1 ์ข์ธก์ ์๋ค. IT/development 2023. 8. 13. [JavaScript] ์์ ํ์ ์ฐฝ์์ ๋ถ๋ชจ์ฐฝ์ ํจ์ ํธ์ถ(javascript ์์ฃผ) ๋ถ๋ชจ์ฐฝ์์ ์์์ฐฝ์ ์๋์ฒ๋ผ ํ์ ์ผ๋ก ์ด์์(html ์ฝ๋๋ ์๋ต) parent.html //๋ฒํผ ํด๋ฆญ ์ child๋ผ๋ ํ์ ํธ์ถ $("#btn").on("click", function() { //ํ์ ํธ์ถ(openPopUp()์ด๋ผ๋ ๊ณตํตํจ์์์๋ ํ์ ํธ์ถํ๋ค๊ณ ๊ฐ์ ) const popup = openPopUp("/child", 1100, 700, "child"); }); //์์ ํ์ ์์ ํธ์ถํ๋ ํจ์(์์์ฐฝ์์ ๋์ด์จ ์ฌ์ ์๋ฒํธ, ๊ณ ๊ฐ๋ช ์ ๋ถ๋ชจ์ ํ๋์ ์ ์ฉ) function chooseClient(clientBizNo, clientNm) { $("#clientBizNo").val(clientBizNo); $("#projClientNm").val(clientNm); } child.html /** .. IT/development 2023. 8. 13. [Vue.js] ๊ธฐ์กด thymeleaf์ Vue.js ์ ์ฉํ๋ ๋ฐฉ๋ฒ 2๊ฐ์ง ๋ฐฉ๋ฒ ์กด์ฌ node.js ํ๊ฒฝ์ผ๋ก ๊ตฌ๋(node.js ๋ฐํ์ ํ๊ฒฝ ํ์, ์๋น์ค ๊ตฌ๋ ์ ์๋ฒ์ port ๋ค๋ฅด๊ฒ ๊ตฌ์ฑ) ๊ธฐ์กด thyemeleafํ์ผ์ script๋ง ์ถ๊ฐ(thyemelaf ๋ ๋๋ง ์ดํ ์กฐ์ํ๋ ๋ฐฉ์์ด๋ผ node.js ๋ถํ์) ์ฌ๊ธฐ์ 2๋ฒ ์งธ ๋ฐฉ๋ฒ ์ฑํ ๊ธฐ์กด html์ body ํ๊ทธ์์ Vue.js ๊ด๋ จ script import(์ค์ ๋ฐฐํฌ ์์ jsํ์ผ ์ง์ import ๊ถ์ฅ) vue.js๋ฅผ ์ ํ div root id ์ค์ (์์) ์ฃผ์๋ก ์ฌ์๋ช ๊ฒ์ ์ด๊ธฐํ ์ฌ์ ๋ชฉ๋ก ์ฌ์์น์ธ ์ ์ฒญ ์๋ฒ ์ฌ์๋ช ์ง๊ธ ์ง์ฑ ์ ํ๋ฒํธ ์ด๋ฉ์ผ {{ item.no }} {{ item.empNm }} {{ item.positionCd }} {{ item.roleCd }} {{ item.empHp }} {{ i.. IT/development 2023. 8. 10. [Vue.js] ์ฝ๋ฐฑ ํจ์์์ this ์ฌ์ฉ ์ ์ ์์ โป ์ผ๋ฐ์ ์ผ๋ก javascript์์ this๋ ์ฌ์ฉํ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅธ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํด ex)๋ทฐ ์ธ์คํด์ค์ methods ๊ฐ์ฒด์ ํจ์ ๋ด ์ฝ๋ฐฑํจ์์์ ์ธ์คํด์ค์ data ๊ฐ์ฒด ๊ฐ์ ์ธํ ํ๋ ๋ก์ง Vue ์ธ์คํด์ค new Vue({ //element id el: '#project-client-req', //vue์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ data: { client: { clientBizNo: '', //์ฌ์ ์๋ฑ๋ก๋ฒํธ clientNm: '', //์ํธ clientZipNo: '', //์ฐํธ๋ฒํธ(์ฃผ์๊ฒ์ API๋ก ์ธํ ) clientBasAddr: '', //๊ธฐ๋ณธ์ฃผ์(์ฃผ์๊ฒ์ API๋ก ์ธํ ) clientDtlAddr: '' //์์ธ์ฃผ์ } }, methods: { //์ฃผ์ ๊ฒ์ searchAddr() { let add.. IT/development 2023. 8. 10. [Vue.js] modal์ฐฝ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ ์๋ ๋ ๋ฌธ์ : modal ํ์ ์ ajax๋ก ๋ฐ์ดํฐ๋ ๊ฐ์ ธ์ค์ง๋ง ๋ฐ์ธ๋ฉ์ด ๋์ง ์์ ํ๊ฒฝ: thyemelaf ํ์ผ์ vue.js๋ฅผ ์ ์ฉ(๋ณ๋ node.js ํ๊ฒฝ X) thymeleafํ์ผ์ vue.js๋ฅผ ์ ์ฉํ ๊ฒฝ์ฐ์ modal์ฐฝ์ ์๋์ฒ๋ผ ๋ฐ์ธ๋ฉ์ด ์๋ ๊ฒฝ์ฐ๊ฐ ์์๋ค. ์์ธ์ ๊ฐ๋จํ๋ค. ๊ธฐ์กด thyemelafํ์ผ์์๋ ์๋์ฒ๋ผ ์ ์ฒด๋ฅผ ๋ํ๋ด๋ div ์์ญ ๋ฐ์ ๋ชจ๋ฌ์ฐฝ div๊ฐ ์์์ ๊ธฐ์กด์๋ javascript/jQuery๋ก ํ์ด์ง ๋ก๋ ํ DOM์ ์ง์ ์ ๊ทผํด์ ์์ ํด์ ๋ฌธ์ ๊ฐ ์๋์์ ํ์ง๋ง vue.js์์๋ root element์์ ๋ชจ๋ฌ์์ญ์ด ํฌํจ๋์ด ์์ด์ผ vue.js์ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋์ด vue.js์ ๋ฐ์ธ๋ฉ ๊ธฐ๋ฅ ์ฌ์ฉ ๊ฐ๋ฅ(vue.js์์๋ DOM์ ์ง์ ์ ๊ทผํ๋ ์ผ์ด ๊ฑฐ์ ์์) ์ ์ฝ๋์ฒ๋ผ m.. IT/development 2023. 8. 6. [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. ์ด์ 1 2 3 4 5 ๋ค์