<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>깔끔한청년개발일지</title>
    <link>https://dev-clean-code.tistory.com/</link>
    <description>깔끔한청년이라는 타이틀 갖으면서  포기하지않고 프론트엔드 개발자 성장하는 청년입니다.</description>
    <language>ko</language>
    <pubDate>Fri, 3 Jul 2026 13:11:24 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>깔끔한청년</managingEditor>
    <image>
      <title>깔끔한청년개발일지</title>
      <url>https://tistory1.daumcdn.net/tistory/4949390/attach/02a86436789f455a99928ae380e620aa</url>
      <link>https://dev-clean-code.tistory.com</link>
    </image>
    <item>
      <title>2.자바스크립 문법공부 ( 변수)</title>
      <link>https://dev-clean-code.tistory.com/13</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;550&quot; data-filename=&quot;모던 자바스크립트.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwjBJS/btrf7AkvhUI/YONr09KJGihx8MCBQHob10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwjBJS/btrf7AkvhUI/YONr09KJGihx8MCBQHob10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwjBJS/btrf7AkvhUI/YONr09KJGihx8MCBQHob10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwjBJS%2Fbtrf7AkvhUI%2FYONr09KJGihx8MCBQHob10%2Fimg.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;550&quot; data-filename=&quot;모던 자바스크립트.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;1.변수 선언 방식은&amp;nbsp; 총 3가지 가 있습니다.&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;# var,let,const 차이점 5가지&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1.중복선언 가능여부&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2.재활당 가능여부&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;3.변수 스코프 유효범위&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;4.변수 호이스팅 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;5.전역객체 프로퍼티 여부&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;1.중복선언&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1.var:중복선언이 가능하다 .&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632664303840&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// 첫번째 변수 var a = 10; console.log(a); // 10 
//두번째 변수 var a = 20; console.log(a); // 20&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2.const,let : 중복선언 불가능&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632664251842&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let a=10 ;
let b=10 ; // SyntaxError: Identifier 'a' has already been declared&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;2.재할당&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1.var,let : 값의 재할당이'가능'한 변수다&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632664443308&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var a =10;
a =20 ;
console.log (a)

let b = 10;
	b = 20;
	console.log(b); // 20&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2.const: 값의 재할당 이'불가능' 한 상수다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632664773088&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const c = 10;
c=20; // TypeError: Assignment to constant variable.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;const 는 상수를 선언하는 키워드 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;재할당값은 불가능하다 .&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;3.스코프&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;스코프는 &lt;b&gt;유효한 참조 범위&lt;/b&gt;를 말한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 함수 레벨 스코프&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632665079971&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var x =1; 
if (true){
// x 는 전역변수이며 , 이미 선언된 전역변수 x가 있으며 x 변수는 중복선언된다.
var x =10 ;
}
console.log(x) // 10

var i =10 ;

for(var i=0; i&amp;lt;5; i++){
// i 는 전역변수이며 , 이미 선언된 전역변수 i 가 있으며 i 변수는 중복선언된다.
	console.log(i)	//0 1 2 3 4 5
 }
 console.log(i) //5&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1632665521495&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;let foo =1;	//전역변수
{
	let foo=2; //지역변수
    let bar =3;  //지역변수
 }
 console.log(foo) //1
 console.log(bar)  // ReferenceError: bar  is not defined&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;4.호이스팅&lt;/span&gt;&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;자바스클립트는 코드를 실행하기 전, 일종의 '코드 평가 과정'을 거치는데,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이 때 '변수 선언문'을 미리 실행두기 때문에 뒤에서 선언된 변수도 앞의 코드에서 참조할 수 있게 된다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이를 변수 호이스팅이라고 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;4-1.var:변수 호이스팅이 발생&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632665822477&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//  foo 변수가 선언(1.선언단계)
// (2.초기화 단계)
console.log(foo);// undefined
//(3.할당 단계)
foo=123;

console.log(foo)

var foo&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4-2.let,const 변수 호이스팅이 발생&amp;nbsp; 하지만 다른방식으로 작동&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;let/const로 변수를 선언하는 경우,&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;코드 실행 전에는&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1) 변수 선언&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2) 초기화는 코드 실행 과정에서 변수 선언문을 만났을 때 수행이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1632665948330&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;console.log(bar); // ReferenceError: bar is not defined 
let bar = 10;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5.전역객체 프로퍼티 여부 (정리예정입니다.)&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/JavaScript</category>
      <category>const</category>
      <category>JavaScript</category>
      <category>Let</category>
      <category>VAR</category>
      <category>변수</category>
      <category>자바스크립트 문법</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/13</guid>
      <comments>https://dev-clean-code.tistory.com/13#entry13comment</comments>
      <pubDate>Sun, 26 Sep 2021 23:21:12 +0900</pubDate>
    </item>
    <item>
      <title>6.Vuex  (state,getters,Mutations,Actions)</title>
      <link>https://dev-clean-code.tistory.com/12</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.Vuex 란 ?&lt;/b&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Vuex 는 vue.js 애플리케이션 에대한 상태관리 + 라이브러리&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Vuex를 사용하면서 해당 어플리케이션의 모든 컴포넌트에 대한 중앙 집중식 역할을한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ogmyy/btrfXHRDFxA/GK5Pp8LQWIO6gavlUKG0pK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ogmyy/btrfXHRDFxA/GK5Pp8LQWIO6gavlUKG0pK/img.png&quot; data-alt=&quot;단방향의; 데이터 흐름 (Vuex 공식문서 사진 참조입니다)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ogmyy/btrfXHRDFxA/GK5Pp8LQWIO6gavlUKG0pK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fogmyy%2FbtrfXHRDFxA%2FGK5Pp8LQWIO6gavlUKG0pK%2Fimg.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;551&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;단방향의; 데이터 흐름 (Vuex 공식문서 사진 참조입니다)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 흐름은 모두 한방향(SPA) 로 흐른다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;강의를 들으며&amp;nbsp; 공부를 해보았던 예제 입니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632490152386&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default{
  namespaced:true,
  //Data 매칭 하는 개념이다.
  state: () =&amp;gt; ({
    a:123,
    b:[]
  }),
  // computed  같은개념 

  getters:{
    someGetter1(state,getters){
      return state.a + 1
    },
     // 여기에서 보여준 다른 Getters 선언 
    someGetter2(state,getters){
      return state.a + getters.someGetter1
    }
  },
  // payload 
  mutations:{
    someMutation(state,payload){
      state.a= 789
      state.b.push(payload)
    }
  },
  //context 는 state,getters,commit,dispatch  총 4가지를 사용할수가있다 
  actions:{
    someAction1({ state,getters,commit,dispatch },payload){
      state.a=789 //Error
      // state.b.push(payload) Error
      commit('someMutation',payload)
    },
      someAction2(context,payload){
        context.commit('someMutation')
        context.dispatch('someAction1',payload)
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.Vuex 를 공부하면서 조금씩 조금씩 더욱더 추가할예정입니다 . !!&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.살을 붙이면서 내용정리를 한번더 훓겠습니다&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>router</category>
      <category>vue</category>
      <category>Vuex</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/12</guid>
      <comments>https://dev-clean-code.tistory.com/12#entry12comment</comments>
      <pubDate>Fri, 24 Sep 2021 22:34:18 +0900</pubDate>
    </item>
    <item>
      <title>5.Vue Router (SPA) 및 Hash Mode Vs History Mode 차이점</title>
      <link>https://dev-clean-code.tistory.com/11</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;Vue Router 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vue-router 에서 router 라는것을 일반적인 화면이 전환될때 사용하며 명칭은 router 라고 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;SPA 는 &lt;span style=&quot;color: #ee2323;&quot;&gt;Single Page Aplication&lt;/span&gt; &lt;b&gt;한개의 페이지로 이루어진 어플리케이션&lt;/b&gt;을 말한다.&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;648&quot; data-filename=&quot;제목 없음.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buCjUF/btrfFF20rqJ/3SjxVKqlPxkwaTxNUmcMr1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buCjUF/btrfFF20rqJ/3SjxVKqlPxkwaTxNUmcMr1/img.png&quot; data-alt=&quot;SPA 설명에제 그림판&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buCjUF/btrfFF20rqJ/3SjxVKqlPxkwaTxNUmcMr1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuCjUF%2FbtrfFF20rqJ%2F3SjxVKqlPxkwaTxNUmcMr1%2Fimg.png&quot; data-origin-width=&quot;1152&quot; data-origin-height=&quot;648&quot; data-filename=&quot;제목 없음.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SPA 설명에제 그림판&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그림판으로 설명드려 죄송합니다 제가 보기 쉽게 하기위해 그리면서 글을 작성했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;index.html (메인페이지)를 한개페이지를 보여주기위한 예제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h1&gt;1-1.Hash Mode Vs History Mode 차이점&lt;/h1&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Hash mode&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Hash mode는 모든 URL을 HASH(#) 형태로 서비스합니다. URL이 변경될 때 페이지가 다시 로드 되지 않는다.&lt;/p&gt;
&lt;pre id=&quot;code_1632411758567&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default new VueRouter({
  routes
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;History mode&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;페이지를 다시로드 하지않고 URl을 탐색할수 가 있다 . SPA의 단일 페이지 클라이언트앱이기 때문에 그렇다.&lt;/p&gt;
&lt;pre id=&quot;code_1632411746959&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;export default new VueRouter({
  routes,
  mode:'history'
})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632411851928&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;HTML5 히스토리 모드 | Vue Router&quot; data-og-description=&quot;HTML5 히스토리 모드 vue-router의 기본 모드는 hash mode 입니다. URL 해시를 사용하여 전체 URL을 시뮬레이트하므로 URL이 변경될 때 페이지가 다시 로드 되지 않습니다. 해시를 제거하기 위해 라우터의 &quot; data-og-host=&quot;router.vuejs.org&quot; data-og-source-url=&quot;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&quot; data-og-url=&quot;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://router.vuejs.org/kr/guide/essentials/history-mode.html#%EC%84%9C%EB%B2%84-%EC%84%A4%EC%A0%95-%EC%98%88%EC%A0%9C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;HTML5 히스토리 모드 | Vue Router&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;HTML5 히스토리 모드 vue-router의 기본 모드는 hash mode 입니다. URL 해시를 사용하여 전체 URL을 시뮬레이트하므로 URL이 변경될 때 페이지가 다시 로드 되지 않습니다. 해시를 제거하기 위해 라우터의&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;router.vuejs.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://okky.kr/article/831473&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://okky.kr/article/831473&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632411876099&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;OKKY | [VUE] SPA 웹 프론트앤드 개발을 위한 정리&quot; data-og-description=&quot;원본:&amp;nbsp; [VUE] SPA 웹 프론트앤드 개발을 위한 정리 목표 본 포스팅에서는 SPA Single Page Application&amp;nbsp; 개발에 앞서 SPA에 대한 이해 및 자바스크립트 프레임워크 Vue.js에 대한 기본적인 이해를 목표로 하&quot; data-og-host=&quot;okky.kr&quot; data-og-source-url=&quot;https://okky.kr/article/831473&quot; data-og-url=&quot;https://okky.kr/article/831473&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/fi2Sd/hyLI5NctEZ/kHqFkkI026idfKPVnOZdaK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/ltxaa/hyLHFP9FK7/RK0uQdcJyKwKLqndKMFyWk/img.jpg?width=556&amp;amp;height=461&amp;amp;face=0_0_556_461,https://scrap.kakaocdn.net/dn/dqwKMg/hyLIUEUc8K/MdHsh21pFq3Tvz8G75R1O1/img.jpg?width=836&amp;amp;height=467&amp;amp;face=0_0_836_467&quot;&gt;&lt;a href=&quot;https://okky.kr/article/831473&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://okky.kr/article/831473&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/fi2Sd/hyLI5NctEZ/kHqFkkI026idfKPVnOZdaK/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200,https://scrap.kakaocdn.net/dn/ltxaa/hyLHFP9FK7/RK0uQdcJyKwKLqndKMFyWk/img.jpg?width=556&amp;amp;height=461&amp;amp;face=0_0_556_461,https://scrap.kakaocdn.net/dn/dqwKMg/hyLIUEUc8K/MdHsh21pFq3Tvz8G75R1O1/img.jpg?width=836&amp;amp;height=467&amp;amp;face=0_0_836_467');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;OKKY | [VUE] SPA 웹 프론트앤드 개발을 위한 정리&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;원본:&amp;nbsp; [VUE] SPA 웹 프론트앤드 개발을 위한 정리 목표 본 포스팅에서는 SPA Single Page Application&amp;nbsp; 개발에 앞서 SPA에 대한 이해 및 자바스크립트 프레임워크 Vue.js에 대한 기본적인 이해를 목표로 하&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;okky.kr&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>vue</category>
      <category>vue router</category>
      <category>프론트엔드</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/11</guid>
      <comments>https://dev-clean-code.tistory.com/11#entry11comment</comments>
      <pubDate>Fri, 24 Sep 2021 00:45:33 +0900</pubDate>
    </item>
    <item>
      <title>1.식별자 네이밍 규칙  (모던 자바스크립트 Deep Dive)</title>
      <link>https://dev-clean-code.tistory.com/8</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;550&quot; data-filename=&quot;모던자바스크립트 썸네일.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/H3nvu/btrfsedvDim/MUa4PNuude5ZkvTaNxcA6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/H3nvu/btrfsedvDim/MUa4PNuude5ZkvTaNxcA6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/H3nvu/btrfsedvDim/MUa4PNuude5ZkvTaNxcA6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FH3nvu%2FbtrfsedvDim%2FMUa4PNuude5ZkvTaNxcA6K%2Fimg.png&quot; data-origin-width=&quot;900&quot; data-origin-height=&quot;550&quot; data-filename=&quot;모던자바스크립트 썸네일.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1632285991707&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var Person,$elem,_name,first_name,val1 (사용가능한 예제)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;1. 식별자 란?!&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;어떤 값을 구별해서 식별해낼 수 있는 고유한 이름을 말한다.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(_), 달러 기호($)를 포함할 수 있다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;단, 식별자는 특수문자를 제외한 문자, 문자, 숫자, 언더스코어(_), 달러 기호($)로 시작해야 한다. 숫자로 시작하는 것은 허용하지 않는다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예약어는 식별자로 사용할 수가 없다.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p id=&quot;예약어란&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1-1. 예약어란?&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예약어는 프로그래밍 언어에서 사용되고 있거나 사용될 예정인 단어를 말한다.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;자바스크립트의 예약어는 다음과 같다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;await, break.case, catch, class, const, let, var, if...&amp;nbsp;등등&amp;nbsp;이&amp;nbsp;있습니다&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632287213153&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;await,break.case,catch,class,const,let,var,if .. 등 이 있습니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;a href=&quot;http://www.w3bai.com/ko/js/js_reserved.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;http://www.w3bai.com/ko/js/js_reserved.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632287173959&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;JavaScript예약어&quot; data-og-description=&quot;자바 스크립트, 일부 식별자는 예약어이며, 변수 또는 함수 이름으로 사용할 수 없습니다. 자바 스크립트 표준 ECMAScript 3 (ES3) 1999 년 12 월 출시되었습니다. ECMAScript 4 (ES4) 포기했다. ECMAScript 5 (ES5)&quot; data-og-host=&quot;www.w3bai.com&quot; data-og-source-url=&quot;http://www.w3bai.com/ko/js/js_reserved.html&quot; data-og-url=&quot;http://www.w3bai.com/ko/js/js_reserved.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;http://www.w3bai.com/ko/js/js_reserved.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;http://www.w3bai.com/ko/js/js_reserved.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;JavaScript예약어&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;자바 스크립트, 일부 식별자는 예약어이며, 변수 또는 함수 이름으로 사용할 수 없습니다. 자바 스크립트 표준 ECMAScript 3 (ES3) 1999 년 12 월 출시되었습니다. ECMAScript 4 (ES4) 포기했다. ECMAScript 5 (ES5)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;www.w3bai.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;b&gt;자세한 내용들은 JavaScript 예약어 확인 바랍니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;네이밍 컨벤션(카멜 케이스, 스네이크 케이스, 파스칼, 헝가리 언 케이스) 등 있으며&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632287456504&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//카멜케이스(CameCase)
const firstName
//스네이크 케이스(snake_case)
const first_name
//파스칼 케이스(pascalCase)
const FirstName
//헝가리언 케이스
const strFistName
const $elem =document.getElementById('myId'); //DOM 노드&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2. 자바스크립트 코딩규칙&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;nbsp;(제가 필요한 예제이며, 같이 공유하면 좋을 거 같아서 참고 및 공부를 해보았습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2-1. 변수, 함수명은 카멜 케이스를 사용한다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632287867457&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const firstName&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;2-2. 파스칼 케이스 &lt;b&gt;클래스&lt;/b&gt;에 사용해준다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632288203562&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const FirstName&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;요약 글을 올리는 이유는 제가 아직 부족하고 배울게 많아서 올리게 되었으며,&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;모르는 것들을 꾸준히 공부를 하면서 올릴 생각입니다.! &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/JavaScript</category>
      <category>네이밍규칙</category>
      <category>모던 자바스크립트</category>
      <category>자바스크립트 Basic</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/8</guid>
      <comments>https://dev-clean-code.tistory.com/8#entry8comment</comments>
      <pubDate>Wed, 22 Sep 2021 14:25:38 +0900</pubDate>
    </item>
    <item>
      <title>4.Moment.js 와 Day.js  사용법</title>
      <link>https://dev-clean-code.tistory.com/7</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1.Moment Js 란?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &lt;b&gt;날짜와 시간에 관련된 데이터의 파싱, 검증 조작 등을 위해 만들어진 유용한 라이브러리입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; 이전에 Date 객체를 이용하여 날짜와 시간에 관련된 연산을 할 때는 별도의 공통 함수를 만들어 사용해야 하지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; Moment Js를 사용하면 내장된 함수를 이용하여 간단하게 처리 가 가능하다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;b&gt; 단점으로 용량이 무겁다&lt;/b&gt; 라고 정의 내릴 수 있습니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://momentjs.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://momentjs.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632234684112&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Moment.js | Home&quot; data-og-description=&quot;Format Dates moment().format('MMMM Do YYYY, h:mm:ss a'); moment().format('dddd'); moment().format(&amp;quot;MMM Do YY&amp;quot;); moment().format('YYYY [escaped] YYYY'); moment().format(); Relative Time moment(&amp;quot;20111031&amp;quot;, &amp;quot;YYYYMMDD&amp;quot;).fromNow(); moment(&amp;quot;20120620&amp;quot;, &amp;quot;YYYYMMDD&amp;quot;&quot; data-og-host=&quot;momentjs.com&quot; data-og-source-url=&quot;https://momentjs.com/&quot; data-og-url=&quot;https://momentjs.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://momentjs.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://momentjs.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Moment.js | Home&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Format Dates moment().format('MMMM Do YYYY, h:mm:ss a'); moment().format('dddd'); moment().format(&quot;MMM Do YY&quot;); moment().format('YYYY [escaped] YYYY'); moment().format(); Relative Time moment(&quot;20111031&quot;, &quot;YYYYMMDD&quot;).fromNow(); moment(&quot;20120620&quot;, &quot;YYYYMMDD&quot;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;momentjs.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1632234203343&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install moment --save&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;공식문서 직접&amp;nbsp; 사용된 예제 방식입니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Format Dates&lt;/h3&gt;
&lt;pre id=&quot;code_1632234365450&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moment().format('MMMM Do YYYY, h:mm:ss a'); // 9월 21일 2021, 11:25:57 오후
moment().format('dddd');                    // 화요일
moment().format(&quot;MMM Do YY&quot;);               // 9월 21일 21
moment().format('YYYY [escaped] YYYY');     // 2021 escaped 2021
moment().format();&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Relative Time&lt;/h3&gt;
&lt;pre id=&quot;code_1632234436551&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moment(&quot;20111031&quot;, &quot;YYYYMMDD&quot;).fromNow(); // 10년 전
moment(&quot;20120620&quot;, &quot;YYYYMMDD&quot;).fromNow(); // 9년 전
moment().startOf('day').fromNow();        // 하루 전
moment().endOf('day').fromNow();          // 33분 후
moment().startOf('hour').fromNow();      // 27분전&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Calendar Time&lt;/h3&gt;
&lt;pre id=&quot;code_1632234607564&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moment().subtract(10, 'days').calendar(); // 2021.09.11.
moment().subtract(6, 'days').calendar();  // 지난주 수요일 오후 11:29
moment().subtract(3, 'days').calendar();  // 지난주 토요일 오후 11:29
moment().subtract(1, 'days').calendar();  // 어제 오후 11:29
moment().calendar();                      // 오늘 오후 11:29
moment().add(1, 'days').calendar();       // 내일 오후 11:29
moment().add(3, 'days').calendar();       // 금요일 오후 11:29
moment().add(10, 'days').calendar();      //2021.10.01&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Multiple Locale Support&lt;/h3&gt;
&lt;pre id=&quot;code_1632234638052&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moment.locale();         // ko
moment().format('LT');   // 오후 11:30
moment().format('LTS');  // 오후 11:30:29
moment().format('L');    // 2021.09.21.
moment().format('l');    // 2021.09.21.
moment().format('LL');   // 2021년 9월 21일
moment().format('ll');   // 2021년 9월 21일
moment().format('LLL');  // 2021년 9월 21일 오후 11:30
moment().format('lll');  // 2021년 9월 21일 오후 11:30
moment().format('LLLL'); // 2021년 9월 21일 화요일 오후 11:30
moment().format('llll'); // 2021년 9월 21일 화요일 오후 11:30&lt;/code&gt;&lt;/pre&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2,. Day Js 란?!&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&quot;Moment.js&quot;와 호환되는 API를 경량 라이브러리입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/iamkun/dayjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/iamkun/dayjs&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632231814238&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - iamkun/dayjs: ⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API&quot; data-og-description=&quot;⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API - GitHub - iamkun/dayjs: ⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same m...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/iamkun/dayjs&quot; data-og-url=&quot;https://github.com/iamkun/dayjs&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/wSRrL/hyLFxj8Y7Z/lz7O11BdqGODXPSUBqsbz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=986_153_1046_218&quot;&gt;&lt;a href=&quot;https://github.com/iamkun/dayjs&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/iamkun/dayjs&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/wSRrL/hyLFxj8Y7Z/lz7O11BdqGODXPSUBqsbz0/img.png?width=1200&amp;amp;height=600&amp;amp;face=986_153_1046_218');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - iamkun/dayjs: ⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same modern API - GitHub - iamkun/dayjs: ⏰ Day.js 2kB immutable date-time library alternative to Moment.js with the same m...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-1.npm 설치 예제입니다&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632231971171&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm install dayjs --save

import dayjs from 'dayjs'&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2-2.isSame을 활용한 format 예제입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;isSame() 메서드는 날짜/시간이 같은지 비교하여 true 또는 false를 반환합니다.&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;현재 시간 가져오기를 해보았습니다.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632232458363&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const isSame =date.isSame(this.todo.updatedAt)
    if(isSame){
       return date.format('YYYY년 MM월 DD 일') 
      	}else{
       return `${date.format('YYYY년 MM월 DD 일')} (edited)`
 	 }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>dayjs</category>
      <category>Format</category>
      <category>Moment js</category>
      <category>vue</category>
      <category>날짜</category>
      <category>시간 라이브러리</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/7</guid>
      <comments>https://dev-clean-code.tistory.com/7#entry7comment</comments>
      <pubDate>Tue, 21 Sep 2021 23:09:12 +0900</pubDate>
    </item>
    <item>
      <title>3-1.lowdb,lodash  사용 과정 및 오류 해결</title>
      <link>https://dev-clean-code.tistory.com/6</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.lowdb 란&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSON이라는 파일 형식을 사용하여 데이터를 저장하는 간단한 데이터 베이스이며&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;선언 방식입니다.(버전 4 버전으로 설치하였습니다 5 버전으로 설치해보았지만 다운그레이드를 하여 성공을 하였습니다)&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1632061670618&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import lowdb from 'lowdb'
import LocalStorage from 'lowdb/adapters/LocalStorage'

const adapter  =new LocalStorage('todo-app') //DB
        this.db = lowdb(adapter)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용하는 방법&lt;/p&gt;
&lt;pre id=&quot;code_1632061906285&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt; createTodo(title){
        const newTodo = {
          id:cryptoRandomString({length: 10 }),
          title,
          createdAt: new Date(),
          updatedAt: new Date(),
          done:false
        }

        this.db
          .get('todos')   //lodash
          .push(newTodo)  //lodash
          .write()  //마지막은 항상 write 를 붙여줘야합니다
      }&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;요약본&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.3일 동안 버전 그레이드로 고생했습니다.. 버전의 중요성을 알았고&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 아직은 실력이 부족하다는 것을 알았습니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;참조할 사이트&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://lodash.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://lodash.com/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632062021461&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Lodash&quot; data-og-description=&quot;_.defaults({&amp;nbsp;'a':&amp;nbsp;1&amp;nbsp;},&amp;nbsp;{&amp;nbsp;'a':&amp;nbsp;3,&amp;nbsp;'b':&amp;nbsp;2&amp;nbsp;});_.partition([1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4],&amp;nbsp;n&amp;nbsp;=&amp;gt;&amp;nbsp;n&amp;nbsp;%&amp;nbsp;2);DownloadLodash is released under the MIT license &amp;amp; supports modern environments. Review the build differences &amp;amp; pick one that&amp;rsquo;s right for you.InstallationIn&quot; data-og-host=&quot;lodash.com&quot; data-og-source-url=&quot;https://lodash.com/&quot; data-og-url=&quot;https://lodash.com/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://lodash.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://lodash.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Lodash&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;_.defaults({&amp;nbsp;'a':&amp;nbsp;1&amp;nbsp;},&amp;nbsp;{&amp;nbsp;'a':&amp;nbsp;3,&amp;nbsp;'b':&amp;nbsp;2&amp;nbsp;});_.partition([1,&amp;nbsp;2,&amp;nbsp;3,&amp;nbsp;4],&amp;nbsp;n&amp;nbsp;=&amp;gt;&amp;nbsp;n&amp;nbsp;%&amp;nbsp;2);DownloadLodash is released under the MIT license &amp;amp; supports modern environments. Review the build differences &amp;amp; pick one that&amp;rsquo;s right for you.InstallationIn&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;lodash.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://github.com/typicode/lowdb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://github.com/typicode/lowdb&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1632062037380&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - typicode/lowdb: Simple to use local JSON database (supports Node, Electron and the browser)&quot; data-og-description=&quot;Simple to use local JSON database (supports Node, Electron and the browser) - GitHub - typicode/lowdb: Simple to use local JSON database (supports Node, Electron and the browser)&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/typicode/lowdb&quot; data-og-url=&quot;https://github.com/typicode/lowdb&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cH1ZlH/hyLFzOuFaF/pirDZwqG5kHqRqbKl05F9K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/typicode/lowdb&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/typicode/lowdb&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cH1ZlH/hyLFzOuFaF/pirDZwqG5kHqRqbKl05F9K/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - typicode/lowdb: Simple to use local JSON database (supports Node, Electron and the browser)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Simple to use local JSON database (supports Node, Electron and the browser) - GitHub - typicode/lowdb: Simple to use local JSON database (supports Node, Electron and the browser)&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>lodash</category>
      <category>lowdb</category>
      <category>Vue예제</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/6</guid>
      <comments>https://dev-clean-code.tistory.com/6#entry6comment</comments>
      <pubDate>Sun, 19 Sep 2021 23:34:42 +0900</pubDate>
    </item>
    <item>
      <title>3.Webpack Plugin 설치과정 및 copy-webpack-plugin</title>
      <link>https://dev-clean-code.tistory.com/5</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;878&quot; data-filename=&quot;webapck 플러그인 설치과정 .png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8WgA9/btrfolwJATT/9S7sNOois112oBE4mkeF0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8WgA9/btrfolwJATT/9S7sNOois112oBE4mkeF0k/img.png&quot; data-alt=&quot;&amp;amp;amp;nbsp;webpack plugin 설치과정 및 설명예제 입니다&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8WgA9/btrfolwJATT/9S7sNOois112oBE4mkeF0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8WgA9%2FbtrfolwJATT%2F9S7sNOois112oBE4mkeF0k%2Fimg.png&quot; data-origin-width=&quot;590&quot; data-origin-height=&quot;878&quot; data-filename=&quot;webapck 플러그인 설치과정 .png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;nbsp;webpack plugin 설치과정 및 설명예제 입니다&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;1.Entry&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&amp;nbsp;- 자바스크립트가 로딩하는 모듈이며 모듈간의 의존성은 증가하며&lt;/b&gt;, &lt;b&gt;의존성의 그래프의 진입점을 웹팩에서&amp;nbsp; Entry이다 .&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631980820683&quot; class=&quot;html xml&quot; style=&quot;display: block; overflow: auto; padding: 20px; color: #383a42; background: #f8f8f8; font-size: 14px; font-family: 'SF Mono', Menlo, Consolas, Monaco, monospace; border: 1px solid #ebebeb; line-height: 1.71; margin: 20px auto 0px; cursor: default; z-index: 1; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  entry:{
    app:[
      '@babel/polyfill',
      path.join(__dirname,'main.js')
    ]
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.Output&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-엔트리 에설정한 자바스크립트 파일을시작으로 의존되어 있는 모든 모듈을 하나로묶을것이다 번들된 결과물을 처리할 위치는 Output에 기록한다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631980838149&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;output:{
    filename:'[name].js',//app.js
    path:path.join(__dirname,'dist')
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3.loader (로더)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;웹팩은 모든 파일을 모듈로 관리한다고 한다. 자바스크립트 뿐만아닌 이미지,폰트,스타일 시트 전부 모듈로 관리한다.&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;로더는 use 키로 구성된객체로 설정할수가 있다&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1631981039375&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  module:{
    rules: [
      {
        test: /\.vue$/,
        use: 'vue-loader'
      },
      {
        test:/\.js$/,
        exclude:/node_modules/,
        use:'babel-loader'
      },
      {
        test:/\.css$/,
        use:[
          'vue-style-loader',
          'css-loader'
        ]
      }
    ]
  },&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://webpack.js.org/concepts/loaders/#loader-features&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://webpack.js.org/concepts/loaders/#loader-features&amp;nbsp;&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631981155726&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Loaders | webpack&quot; data-og-description=&quot;webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.&quot; data-og-host=&quot;webpack.js.org&quot; data-og-source-url=&quot;https://webpack.js.org/concepts/loaders/#loader-features&quot; data-og-url=&quot;https://webpack.js.org/concepts/loaders/#loader-features&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/doWWWe/hyLDYIDyOE/cIX32ZkxHkmZvkMWx3dbR1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512&quot;&gt;&lt;a href=&quot;https://webpack.js.org/concepts/loaders/#loader-features&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://webpack.js.org/concepts/loaders/#loader-features&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/doWWWe/hyLDYIDyOE/cIX32ZkxHkmZvkMWx3dbR1/img.png?width=512&amp;amp;height=512&amp;amp;face=0_0_512_512');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Loaders | webpack&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;webpack is a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser, yet it is also capable of transforming, bundling, or packaging just about any resource or asset.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;webpack.js.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;module.rules&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;를 사용해 여러개의 로더 지정이 가능하다. 이것은 로더를 표시하는 간결한 방법이며, 코드를 깔끔하게 유지하는데 도움이 된다. 또한 각 로더에 대한 전체 개요를 제공한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;로더는 오른쪽에서 왼쪽으로 평가, 실행된다고 한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.npm run dev fails : ValidationError: Invalid options object&amp;nbsp; 오류 가 발생했다 .&lt;/p&gt;
&lt;pre id=&quot;code_1631981275564&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm run dev fails : ValidationError: Invalid options object&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1631981298081&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;npm run dev fails : ValidationError: Invalid options object&quot; data-og-description=&quot;Currently learning Vue js and express js through some tutorials, I am still newbie regarding these technologies. Anyway following the tutorials I am building a small project in which I have a fol...&quot; data-og-host=&quot;stackoverflow.com&quot; data-og-source-url=&quot;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&quot; data-og-url=&quot;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/mwsDW/hyLDZOiYwv/GIE46fHmTOO8XkOucBStI0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stackoverflow.com/questions/61937054/npm-run-dev-fails-validationerror-invalid-options-object&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/mwsDW/hyLDZOiYwv/GIE46fHmTOO8XkOucBStI0/img.png?width=316&amp;amp;height=316&amp;amp;face=0_0_316_316');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;npm run dev fails : ValidationError: Invalid options object&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Currently learning Vue js and express js through some tutorials, I am still newbie regarding these technologies. Anyway following the tutorials I am building a small project in which I have a fol...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stackoverflow.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #555555;&quot;&gt;즉, webpack 자체의 문제가 아닌 copy-webpack-plugin이 버전 6 이상부터는&lt;span&gt; Patterns를 한번더 감싸줘야 한다는 의미이다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>entry</category>
      <category>FRONT-END</category>
      <category>loader</category>
      <category>Tode list</category>
      <category>vue</category>
      <category>webpack-cli</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/5</guid>
      <comments>https://dev-clean-code.tistory.com/5#entry5comment</comments>
      <pubDate>Sun, 19 Sep 2021 01:10:23 +0900</pubDate>
    </item>
    <item>
      <title>2.To do list  및 오류 ([오류해결] npm install 설치시 npm ERR! code ERESOLVE)</title>
      <link>https://dev-clean-code.tistory.com/4</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;3420&quot; data-origin-height=&quot;1684&quot; data-filename=&quot;스크린샷 2021-09-13 오후 9.25.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJu3c3/btre1a2Viax/YKp65WzfrZuktDwYie87K1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJu3c3/btre1a2Viax/YKp65WzfrZuktDwYie87K1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJu3c3/btre1a2Viax/YKp65WzfrZuktDwYie87K1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJu3c3%2Fbtre1a2Viax%2FYKp65WzfrZuktDwYie87K1%2Fimg.png&quot; data-origin-width=&quot;3420&quot; data-origin-height=&quot;1684&quot; data-filename=&quot;스크린샷 2021-09-13 오후 9.25.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;모듈 설치 가 끝난후&amp;nbsp; Vue-cli 로 Vue -Todo-list 진행작업 을 하고있습니다.&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;545&quot; data-filename=&quot;스크린샷 2021-09-13 오후 9.47.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vbM0X/btre324EmsX/9T1LO8eopqHhVa7KlH9MsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vbM0X/btre324EmsX/9T1LO8eopqHhVa7KlH9MsK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vbM0X/btre324EmsX/9T1LO8eopqHhVa7KlH9MsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvbM0X%2Fbtre324EmsX%2F9T1LO8eopqHhVa7KlH9MsK%2Fimg.png&quot; data-origin-width=&quot;729&quot; data-origin-height=&quot;545&quot; data-filename=&quot;스크린샷 2021-09-13 오후 9.47.07.png&quot; data-ke-mobilestyle=&quot;widthOrigin&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;오류에 원인은&amp;nbsp; package.json 버전 다운그레이드를 해줘야 한다. (최신버전에서는&amp;nbsp; 호환이 불가한이유였다.)&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;webpack 관련 과 babel 버전을 다운그레이드를 해줘야한다..&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;그리고 항상 error 속에 답이 있다 ..ㅠㅠ 저같이 삽질하시지 맙시다.. ㅠㅠ&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631627647711&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//개발용 의존패키지 입니다. 
npm i -D webpack@^4 webpack@^4&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>Cli 오류</category>
      <category>vue</category>
      <category>Vue Todo list</category>
      <category>vue-cli</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/4</guid>
      <comments>https://dev-clean-code.tistory.com/4#entry4comment</comments>
      <pubDate>Tue, 14 Sep 2021 22:55:41 +0900</pubDate>
    </item>
    <item>
      <title>1.Vue (Wepack,Babel,Sass)</title>
      <link>https://dev-clean-code.tistory.com/2</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;의존성 과&amp;nbsp; 개발용 의존성 모듈을 배웠습니다. &lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #e4e4e4;&quot;&gt;&lt;b&gt;패키지의 배포 시 포함될 의존성 모듈을 지정합니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631443558933&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm install --save MODULE_NAME
# or
$ npm i MODULE_NAME&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;개발용 모듈설치&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #e4e4e4;&quot;&gt;&lt;b&gt;패키지의 개발시 사용될 의존성 모듈을 지정합니다(배포시&amp;nbsp; 포함되지 않는다.)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631443678654&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm install --save-dev MODULE_NAME
# or
$ npm i -D MODULE_NAME&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발용 의존성 과 의존성의 차이점은 배포 차이인 것 같다&lt;span style=&quot;color: #ee2323;&quot;&gt; (아직은 많이 몰라서 다시 공부해서 제대로 추가하겠습니다.)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Wepack &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #dddddd;&quot;&gt;웹팩은 오픈소스 자바스크립트 모듈 번들 소스이다. (쉽게 말해 Plugin라고 생각하면 편할 것 같다.)&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-Webpack-cli는 터미널에서 웹팩 명령 (Commands)를 실행할 수 있게 해주는 도구입니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631444207735&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;webpack-cli 커맨드에서 실행할수 있는도구입니다.
$ npm i -D webpack webpack-cli
//개발용 으로 실시간 Reload 서버를 실행하기위해  wepack-dev-server 설치
$ npm i -D webpack webpack-cli
//wepack-merge 웹팩 Config 객체를 병합(merge)하기 설치 합니다.
$ npm i -D webpack-merge&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;여기서 주의할 점은 모르는 것들 꼭 Stack Over flow 참고하시면 좋습니다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Babel&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #e4e4e4;&quot;&gt;&lt;b&gt;바벨은 Es6 이상의 코드를 Es5 이하 버전으로 변환하기 사용한다고 한다.&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://babeljs.io/docs/en/babel-core&quot;&gt;@babel/core&lt;/a&gt;: 바벨이 실제 동작하는 모듈입니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://babeljs.io/docs/en/babel-preset-env&quot;&gt;@babel/preset-env&lt;/a&gt;: 바벨의 지원 스펙을 지정합니다.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/babel/babel-loader&quot;&gt;babel-loader&lt;/a&gt;: 웹팩(Webpack) 지원을 위해 사용합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1631444364941&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;$ npm i -D @babel/core @babel/preset-env babel-loader&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EsLint&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;'EsLint' 코드 품질과 코딩 스타일의 문제를 식별하기 위한 정적 코드 분석 도구입니다.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1631448328354&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;npm i -D eslint babel-eslint eslint-config-standard  eslint-plugin-import eslint-plugin-node eslint-plugin-promise eslint-plugin-standard eslint-plugin-vue
 // wepack-cli 설치 명령어 입니다.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;render function 동작 Es6 문법 간소화&lt;/p&gt;
&lt;pre id=&quot;code_1631448847000&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;//h = hyperscriptd의 약어로 html 구조를 생성하는 스크립트의 의미 Virtual DoM 구현에서 관행적으로 사용
render: h=&amp;gt; h(App)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;총 세 가지를 설치를 하였으며 자세한 내용 따로 빼놓았습니다. 그리고 지금은 현재&amp;nbsp; 공부하는 과정이며,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혼자 공부하면서 몰랐던 부분을 저장과 기록을 채워놓을 예정입니다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재 몰랐던 부분들 정리 요약본 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.Wepack-Cli 사용도를 몰랐습니다 설치 과정을 하면서 알게 되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. 의존성과 개발용 의존성 차이점&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.Babel의 사용도&amp;nbsp; 빈도를 알았습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.render function 동작 ES6 문법 간소화&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;5.Vue 문서화 찾는요령&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Dev(기록 및 이론정리)/Vue</category>
      <category>babel</category>
      <category>Vue module 설치</category>
      <category>Wepack</category>
      <category>Wepack-cli</category>
      <author>깔끔한청년</author>
      <guid isPermaLink="true">https://dev-clean-code.tistory.com/2</guid>
      <comments>https://dev-clean-code.tistory.com/2#entry2comment</comments>
      <pubDate>Sun, 12 Sep 2021 20:04:53 +0900</pubDate>
    </item>
  </channel>
</rss>