<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>como siempre</title>
    <link>https://zodev.tistory.com/</link>
    <description>바쁘게 굴러가는 ZoD의 하루~</description>
    <language>ko</language>
    <pubDate>Fri, 10 Apr 2026 14:36:23 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ZoD</managingEditor>
    <image>
      <title>como siempre</title>
      <url>https://tistory1.daumcdn.net/tistory/6999447/attach/bccaa6aac13346dd997eb93b02b4e798</url>
      <link>https://zodev.tistory.com</link>
    </image>
    <item>
      <title>동적으로 정규표현식 사용하기</title>
      <link>https://zodev.tistory.com/entry/%EB%8F%99%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0</link>
      <description>&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 Sans Light';&quot;&gt;input에서 소수점 자리 수를 맞춰주기 위해 정규표현식을 활용했다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;1. 정규 표현식 리터럴&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738628123000&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;const regexp = /is/i;&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;b&gt;&lt;span style=&quot;font-family: 'Noto Sans Light';&quot;&gt;2. &lt;span style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;RegExp 생성자 함수&lt;/span&gt; &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1738628156984&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// new RegExp(pattern[, flag])
const regexp = new RegExp(/is/i);   // ES6&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;동적으로 변수를 넣어주기 위해서는 &quot;백틱으로 감싸준다&quot; 라는 방법이 생각날 것이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그러나 정규 표현식 리터럴에서는 단순히 백틱으로 감싸서 사용하면 &lt;b&gt;문자열로 취급&lt;/b&gt;되기 때문에 정규표현식으로 사용이 불가능하다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738628279167&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ❌
const regExp = `^[0-9]+\\.?\\d{0,${decimal}}`;&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;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;new RegExp 문을 통해 백틱 내의 문자열을 정규표현식 객체로 만들어주는 것&lt;/span&gt;&lt;/b&gt;이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 / 로 양쪽을 감싸주면 '문자 /'를 포함한 정규표현식으로 인식하기 때문에, &lt;b&gt;&lt;u&gt;양 끝의 /를 제외한 문자열&lt;/u&gt;&lt;/b&gt;을 사용해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1738628439336&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;// ⭕
const regExp = new RegExp(`^[0-9]+\\.?\\d{0,${decimal}}`);&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Javascript</category>
      <category>jsvascript</category>
      <category>백틱</category>
      <category>정규표현식</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/178</guid>
      <comments>https://zodev.tistory.com/entry/%EB%8F%99%EC%A0%81%EC%9C%BC%EB%A1%9C-%EC%A0%95%EA%B7%9C%ED%91%9C%ED%98%84%EC%8B%9D-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#entry178comment</comments>
      <pubDate>Tue, 4 Feb 2025 09:21:52 +0900</pubDate>
    </item>
    <item>
      <title>[ 카카오맵 API ] kakaomap type 정의</title>
      <link>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-kakaomap-type-%EC%A0%95%EC%9D%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;kakaomap API는 타입 지원을 하지 않기 때문에 타입스크립트 환경에서 해당 라이브러리를 사용하려면 글로벌 타입 선언이 필요하다.&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;&lt;b&gt;env.d.ts&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;interface Window {
  kakao: any
}&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;여기까지 했을 때 new window.kakao.maps로 시작하는 메서드는 문제 없이 사용할 수 있지만, kakao Map 객체에 대한 타입 정의는 불가능하다.&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;/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;&lt;b&gt;src/types/kakao.d.ts&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;declare namespace kakao.maps {
  class Map {
    constructor(container: HTMLElement, options: MapOptions)
    getCenter(): LatLng
    setCenter(latlng: LatLng): void
    // 필요한 메서드 추가
  }

  interface MapOptions {
    center: LatLng
    level: number
  }

  class LatLng {
    constructor(latitude: number, longitude: number)
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;필요한 메서드나 객체 등을 수동으로 추가해줘야 한다는 단점&lt;/li&gt;
&lt;/ul&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;tsconfig.json&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;perl&quot;&gt;&lt;code&gt;&quot;compilerOptions&quot;: {
  &quot;typeRoots&quot;: [&quot;node_modules/@types&quot;, &quot;src/types&quot;]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;경로 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 타입을 직접 선언하면 map 객체에 타입 정의를 할 수 있다.&lt;/p&gt;
&lt;pre class=&quot;angelscript&quot;&gt;&lt;code&gt;const mapInstance = ref&amp;lt;null | kakao.maps.Map&amp;gt;(null)
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;mapInstance.value.getCenter()
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;map 객체에 쓸 수 있는 getCenter()와 같은 메서드도 타입 경고 없이 사용 가능하다. (물론 수동으로 추가해줘야 하지만&amp;hellip;)&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>사이드 프로젝트/ddangkong</category>
      <category>typescript</category>
      <category>카카오맵</category>
      <category>타입 정의</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/177</guid>
      <comments>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-kakaomap-type-%EC%A0%95%EC%9D%98#entry177comment</comments>
      <pubDate>Sun, 12 Jan 2025 15:59:18 +0900</pubDate>
    </item>
    <item>
      <title>현재 위치 좌표 요청 | navigator의 geolocation 객체</title>
      <link>https://zodev.tistory.com/entry/%ED%98%84%EC%9E%AC-%EC%9C%84%EC%B9%98-%EC%A2%8C%ED%91%9C-%EC%9A%94%EC%B2%AD</link>
      <description>&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;const center = ref({ lat: 37.5291904, lng: 126.9202944 })

/**
 * 현재 위치 좌표 요청
 */
const setCurrentLocation = () =&amp;gt; {
  if ('geolocation' in navigator) {
    navigator.geolocation.getCurrentPosition((position) =&amp;gt; {
      const { latitude, longitude } = position.coords
      center.value = { lat: latitude, lng: longitude }
    })
  }
}&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;figure id=&quot;og_1736491641279&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;Navigator: geolocation 속성 - Web API | MDN&quot; data-og-description=&quot;Navigator.geolocation 읽기 전용 속성은 웹에서 장치의 위치를 알아낼 때 사용할 수 있는 Geolocation 객체를 반환합니다. 웹 사이트나 웹 앱은 위치정보를 사용해 결과 화면을 맞춤 설정할 수 있습니다.&quot; data-og-host=&quot;developer.mozilla.org&quot; data-og-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/API/Navigator/geolocation&quot; data-og-url=&quot;https://developer.mozilla.org/ko/docs/Web/API/Navigator/geolocation&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://developer.mozilla.org/ko/docs/Web/API/Navigator/geolocation&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developer.mozilla.org/ko/docs/Web/API/Navigator/geolocation&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;Navigator: geolocation 속성 - Web API | MDN&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Navigator.geolocation 읽기 전용 속성은 웹에서 장치의 위치를 알아낼 때 사용할 수 있는 Geolocation 객체를 반환합니다. 웹 사이트나 웹 앱은 위치정보를 사용해 결과 화면을 맞춤 설정할 수 있습니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developer.mozilla.org&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;장치의 위치 정보에 접근할 수 있는 Geolocation 객체 반환&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;&lt;b&gt;Geolocation&lt;/b&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;b&gt;getCurrentPosition()&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장치의 현재 위치 조사 후 GeolocationPosition 객체로 반환&lt;/li&gt;
&lt;li&gt;GeolocationPosition 객체
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;coords : 주어진 시간의 위치 (latitude, longitude 등 반환)&lt;/li&gt;
&lt;li&gt;timestamp : 위치를 기록한 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;watchPosition()
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;장치의 위치가 변경될 때마다 호출하는 콜백 등록&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;clearWatch()
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;watchPosition()을 이용해 등록한 콜백을 삭제&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&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;navigator.geolocation.getCurrentPosition 의 &lt;u&gt;비동기적인 특성&lt;/u&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;pre class=&quot;typescript&quot;&gt;&lt;code&gt;/**
 * 현재 위치 좌표 요청
 */
export const getCurrentLocation = (): Promise&amp;lt;{ lat: number; lng: number }&amp;gt; =&amp;gt; {
  return new Promise((resolve) =&amp;gt; {
    if ('geolocation' in navigator) {
      navigator.geolocation.getCurrentPosition(
        (position) =&amp;gt; {
          const { latitude, longitude } = position.coords
          resolve({ lat: latitude, lng: longitude })
        },
        () =&amp;gt; {
          resolve({ lat: 37.492925, lng: 127.02811 })
        },
      )
    } else {
      resolve({ lat: 37.492925, lng: 127.02811 })
    }
  })
}

&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;반환 값은 무조건 { lat: number, lng: number } 타입이지만, Promise 반환 값의 타입을 선언해줘야 변수에 할당해줄 때 타입 에러가 나지 않음&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>사이드 프로젝트/ddangkong</category>
      <category>geolocation</category>
      <category>javascript</category>
      <category>위치정보</category>
      <category>카카오맵</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/176</guid>
      <comments>https://zodev.tistory.com/entry/%ED%98%84%EC%9E%AC-%EC%9C%84%EC%B9%98-%EC%A2%8C%ED%91%9C-%EC%9A%94%EC%B2%AD#entry176comment</comments>
      <pubDate>Fri, 10 Jan 2025 15:49:20 +0900</pubDate>
    </item>
    <item>
      <title>[ 카카오맵 API ] vue3에서 kakaomap 사용하기</title>
      <link>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-vue3%EC%97%90%EC%84%9C-kakaomap-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;카카오 개발자 애플리케이션 등록&lt;/h3&gt;
&lt;figure id=&quot;og_1736412288054&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;Kakao Developers&quot; data-og-description=&quot;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&quot; data-og-host=&quot;developers.kakao.com&quot; data-og-source-url=&quot;https://developers.kakao.com/&quot; data-og-url=&quot;https://developers.kakao.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/chAJIa/hyX0v7LOjT/LuS0QJi9K0FYxKenqppFz0/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/bs6rVP/hyXWoh9OBJ/DV96pNVAgbZcxgI86Nlm2K/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/H0cZA/hyXWnp0ESr/D2cUYRqB8nz6q8IkdXyGgK/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000&quot;&gt;&lt;a href=&quot;https://developers.kakao.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.kakao.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/chAJIa/hyX0v7LOjT/LuS0QJi9K0FYxKenqppFz0/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/bs6rVP/hyXWoh9OBJ/DV96pNVAgbZcxgI86Nlm2K/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/H0cZA/hyXWnp0ESr/D2cUYRqB8nz6q8IkdXyGgK/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000');&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;Kakao Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.kakao.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 지난번에 해 놓은 게 있어서 사이트 도메인 주소만 바꿔줬다.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kakao1.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;174&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ootUA/btsLIFJivQF/tuv4HQ7e7r9Ei5rgyGOX81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ootUA/btsLIFJivQF/tuv4HQ7e7r9Ei5rgyGOX81/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ootUA/btsLIFJivQF/tuv4HQ7e7r9Ei5rgyGOX81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FootUA%2FbtsLIFJivQF%2Ftuv4HQ7e7r9Ei5rgyGOX81%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;912&quot; height=&quot;174&quot; data-filename=&quot;kakao1.png&quot; data-origin-width=&quot;912&quot; data-origin-height=&quot;174&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure id=&quot;og_1736412366408&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;[ API ] 카카오 오픈 API 사용하기 / Postman 통한 요청 확인&quot; data-og-description=&quot;카카오 API 사용하기step 1. 카카오 developers 사이트 이동&amp;nbsp;Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공&quot; data-og-host=&quot;zodev.tistory.com&quot; data-og-source-url=&quot;https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8&quot; data-og-url=&quot;https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/GPTqa/hyXWt4SObA/kG87TwWA0ltQS7rJ27MKd0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/dbErCI/hyXWnp0FnQ/9N7NrEjpaRe7WdE7avGcx1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/wC6QZ/hyX0pfpD7y/2R68tYTsoVrwY7fJfSnQS1/img.png?width=1190&amp;amp;height=743&amp;amp;face=0_0_1190_743&quot;&gt;&lt;a href=&quot;https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/GPTqa/hyXWt4SObA/kG87TwWA0ltQS7rJ27MKd0/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/dbErCI/hyXWnp0FnQ/9N7NrEjpaRe7WdE7avGcx1/img.png?width=800&amp;amp;height=519&amp;amp;face=0_0_800_519,https://scrap.kakaocdn.net/dn/wC6QZ/hyX0pfpD7y/2R68tYTsoVrwY7fJfSnQS1/img.png?width=1190&amp;amp;height=743&amp;amp;face=0_0_1190_743');&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;[ API ] 카카오 오픈 API 사용하기 / Postman 통한 요청 확인&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카카오 API 사용하기step 1. 카카오 developers 사이트 이동&amp;nbsp;Kakao Developers카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zodev.tistory.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;
&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;b&gt;앱 키&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/d3bSiQ/btsLIGuDsa6/21UrmcA6O5sva4jbiga40K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/d3bSiQ/btsLIGuDsa6/21UrmcA6O5sva4jbiga40K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/d3bSiQ/btsLIGuDsa6/21UrmcA6O5sva4jbiga40K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fd3bSiQ%2FbtsLIGuDsa6%2F21UrmcA6O5sva4jbiga40K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;387&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;387&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 중에서도 &lt;span style=&quot;color: #ee2323;&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;또 한 가지 중요한 것은 카카오맵 활성화 설정을 해줘야 한다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kakao2.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cINSfX/btsLHRDWugb/SthwehFDClum9KSKagw9EK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cINSfX/btsLHRDWugb/SthwehFDClum9KSKagw9EK/img.png&quot; data-alt=&quot;이거 안 해주면 영원히 에러 겪음&amp;amp;hellip;&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cINSfX/btsLHRDWugb/SthwehFDClum9KSKagw9EK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcINSfX%2FbtsLHRDWugb%2FSthwehFDClum9KSKagw9EK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1281&quot; height=&quot;628&quot; data-filename=&quot;kakao2.png&quot; data-origin-width=&quot;1281&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;이거 안 해주면 영원히 에러 겪음&amp;hellip;&lt;/figcaption&gt;
&lt;/figure&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;&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;카카오맵 API&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://apis.map.kakao.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://apis.map.kakao.com/&lt;/a&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. env 파일에 Javascript key 등록&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.env 파일에 Javascript key를 등록한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내 프로젝트는 vite 환경이기 때문에 key 이름에 접두사로 VITE_를 꼭 붙여줘야 키 값을 인식한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(vue cli의 경우 VUE_APP_)&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;  env 파일의 키 값 사용하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vite 환경에서는 import.meta를 사용한다.&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;const { VITE_KAKAO_API_KEY } = import.meta.env&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;size18&quot;&gt;&lt;b&gt;2. 지도 그릴 영역 만들기&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;div id=&quot;map&quot; ref=&quot;mapContainer&quot; style=&quot;width: 100%; height: 500px&quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;const mapContainer = ref(null)&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;size18&quot;&gt;&lt;b&gt;3. 실제 지도 그리는 Javascript API를 불러오기&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;const script = document.createElement('script')
script.src = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${VITE_KAKAO_API_KEY}&amp;amp;autoload=false`
document.head.appendChild(script)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script 태그를 직접 삽입하지 않고 자바스크립트로 삽입하는 방법을 택했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이때 //이라는 상대 프로토콜을 사용하면, 사용자의 http, https 환경에 따라 자동으로 해당 프로토콜을 따라간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 script 태그는 어떤 위치에 넣어도 상관없지만, &lt;b&gt;반드시 실행 코드보다 먼저 선언&lt;/b&gt;되어야 하기 때문에 head 부분에 넣어줬다.&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;size18&quot;&gt;&lt;b&gt;4. 지도 띄우는 코드 작성&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;script.onload = () =&amp;gt; {
  window.kakao.maps.load(() =&amp;gt; {
	  //지도를 생성할 때 필요한 기본 옵션
    const options = {
      center: new window.kakao.maps.LatLng(33.450701, 126.570667),
      level: 3,
    }
		//지도 생성 및 객체 리턴
    const mapInstance = new window.kakao.maps.Map(mapContainer.value, options)
  })
}&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;만약 타입스크립트를 사용하는 중에 window.kakao에서 타입 에러가 난다면&amp;hellip; (아래 글 참고)&lt;/p&gt;
&lt;figure id=&quot;og_1736412670506&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;[ 카카오맵 API ] Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'.&quot; data-og-description=&quot;typescript 환경에서 window.kakao.maps를 사용하려고 하면 Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'. 라는 에러가 뜨는데 이를 어떻게 해결할까&amp;nbsp;&amp;nbsp;&amp;nbsp;env.d.tsinterface Window { kakao: any}타입을 직접 &quot; data-og-host=&quot;zodev.tistory.com&quot; data-og-source-url=&quot;https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis&quot; data-og-url=&quot;https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dg2N97/hyXWpOUzf2/lgodFhSj1DXEM8xkfTkjKk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/d2vP6w/hyXWxTGdxE/3JkCO6h0Lsd6K2lQKswFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800&quot;&gt;&lt;a href=&quot;https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dg2N97/hyXWpOUzf2/lgodFhSj1DXEM8xkfTkjKk/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/d2vP6w/hyXWxTGdxE/3JkCO6h0Lsd6K2lQKswFK0/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800');&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;[ 카카오맵 API ] Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'.&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;typescript 환경에서 window.kakao.maps를 사용하려고 하면 Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'. 라는 에러가 뜨는데 이를 어떻게 해결할까&amp;nbsp;&amp;nbsp;&amp;nbsp;env.d.tsinterface Window { kakao: any}타입을 직접&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;zodev.tistory.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;Map 객체의 첫 번째 파라미터는 지도를 그릴 영역의 DOM 레퍼런스, 두 번째 파라미터는 options가 들어간다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;options에는 커스텀하려는 내용을 채워넣으면 된다. 그러나 center는 필수 값.&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;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;최종 코드&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;단지 지도만 로드했을 때&lt;/p&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div id=&quot;map&quot; ref=&quot;mapContainer&quot; style=&quot;width: 100%; height: 500px&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script setup lang=&quot;ts&quot;&amp;gt;
import { ref, onMounted } from 'vue'
const { VITE_KAKAO_API_KEY } = import.meta.env

const mapContainer = ref(null)

const loadMap = () =&amp;gt; {
  const script = document.createElement('script')
  script.src = `//dapi.kakao.com/v2/maps/sdk.js?appkey=${VITE_KAKAO_API_KEY}&amp;amp;autoload=false`
  document.head.appendChild(script)

  script.onload = () =&amp;gt; {
    window.kakao.maps.load(() =&amp;gt; {
      const options = {
        center: new window.kakao.maps.LatLng(33.450701, 126.570667),
        level: 3,
      }

      const mapInstance = new window.kakao.maps.Map(mapContainer.value, options)
    })
  }
}

onMounted(() =&amp;gt; {
  loadMap()
})
&amp;lt;/script&amp;gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;kakao3.png&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rDSId/btsLIouiy7C/nclZM7q5B7GuLiIBOhjB61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rDSId/btsLIouiy7C/nclZM7q5B7GuLiIBOhjB61/img.png&quot; data-alt=&quot;Hi kakao~&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rDSId/btsLIouiy7C/nclZM7q5B7GuLiIBOhjB61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrDSId%2FbtsLIouiy7C%2FnclZM7q5B7GuLiIBOhjB61%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;372&quot; height=&quot;430&quot; data-filename=&quot;kakao3.png&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Hi kakao~&lt;/figcaption&gt;
&lt;/figure&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;&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;
&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>사이드 프로젝트/ddangkong</category>
      <category>vue</category>
      <category>지도</category>
      <category>카카오 api</category>
      <category>카카오맵</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/175</guid>
      <comments>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-vue3%EC%97%90%EC%84%9C-kakaomap-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0#entry175comment</comments>
      <pubDate>Thu, 9 Jan 2025 17:54:17 +0900</pubDate>
    </item>
    <item>
      <title>[ 카카오맵 API ] Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'.</title>
      <link>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;typescript 환경에서 window.kakao.maps를 사용하려고 하면 &lt;b&gt;Property 'kakao' does not exist on type 'Window &amp;amp; typeof globalThis'.&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;&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;size18&quot;&gt;&lt;b&gt;env.d.ts&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;typescript&quot; data-ke-language=&quot;typescript&quot;&gt;&lt;code&gt;interface Window {
  kakao: any
}&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;&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;eslint 규칙에서 any를 허용해야 한다면?&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;&lt;b&gt;eslint.config.js&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;&lt;code&gt;{
  rules: {
    '@typescript-eslint/no-explicit-any': 'off', //  any 사용 허용
  },
},
&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>사이드 프로젝트/ddangkong</category>
      <category>typescript</category>
      <category>카카오맵</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/174</guid>
      <comments>https://zodev.tistory.com/entry/%EC%B9%B4%EC%B9%B4%EC%98%A4%EB%A7%B5-API-Property-kakao-does-not-exist-on-type-Window-typeof-globalThis#entry174comment</comments>
      <pubDate>Wed, 8 Jan 2025 09:28:04 +0900</pubDate>
    </item>
    <item>
      <title>[ Nuxt ] 일부 페이지에는 Layout 적용 하지 않기</title>
      <link>https://zodev.tistory.com/entry/Nuxt-%EC%9D%BC%EB%B6%80-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90%EB%8A%94-Layout-%EC%A0%81%EC%9A%A9-%ED%95%98%EC%A7%80-%EC%95%8A%EA%B8%B0</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Nuxt Layout 공식 문서 참고&lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1734567141668&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;layouts/ &amp;middot; Nuxt Directory Structure&quot; data-og-description=&quot;Nuxt provides a layouts framework to extract common UI patterns into reusable layouts.&quot; data-og-host=&quot;nuxt.com&quot; data-og-source-url=&quot;https://nuxt.com/docs/guide/directory-structure/layouts#changing-the-layout-dynamically&quot; data-og-url=&quot;https://nuxt.com/docs/guide/directory-structure/layouts#changing-the-layout-dynamically&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/sAf8x/hyXOgQ35ia/ugkvQxHI7uqbDCA5P6u300/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bqUo6c/hyXOoIjUEj/lKi1ZwS7NXr2fgv7W2GDQ1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://nuxt.com/docs/guide/directory-structure/layouts#changing-the-layout-dynamically&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://nuxt.com/docs/guide/directory-structure/layouts#changing-the-layout-dynamically&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/sAf8x/hyXOgQ35ia/ugkvQxHI7uqbDCA5P6u300/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/bqUo6c/hyXOoIjUEj/lKi1ZwS7NXr2fgv7W2GDQ1/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;layouts/ &amp;middot; Nuxt Directory Structure&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Nuxt provides a layouts framework to extract common UI patterns into reusable layouts.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;nuxt.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레이아웃을 쓰지 않을 페이지에는 definePageMeta를 사용해서 layout을 false 처리 해주면 해당 페이지에는 레이아웃이 제외된다.&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;definePageMeta({
  layout: false,
});&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;근데 만약 이게 적용이 안 된다면 NuxtLayout에 적용되어 있는 레이아웃 파일 이름을 확인해보자.&lt;/p&gt;
&lt;pre class=&quot;html xml&quot; data-ke-language=&quot;html&quot;&gt;&lt;code&gt;&amp;lt;NuxtLayout name=&quot;container&quot;&amp;gt;
  &amp;lt;NuxtPage /&amp;gt;
&amp;lt;/NuxtLayout&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 이처럼 layout에 특정 이름을 적용해줬다면 위의 defindePageMeta 코드가 작동하지 않을 것이다.&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;그렇기 때문에 definePageMeta로 레이아웃을 끄거나, 바꿔주려면 기본적으로 설정된 Layout의 이름이 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;default&lt;/b&gt;&lt;/span&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;
&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;layouts/default.vue&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734567363996&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;main&amp;gt;
    &amp;lt;slot&amp;gt;&amp;lt;/slot&amp;gt;
  &amp;lt;/main&amp;gt;
&amp;lt;/template&amp;gt;&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;b&gt;App.vue&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734567381835&quot; class=&quot;html xml&quot; data-ke-language=&quot;html&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;lt;NuxtLayout&amp;gt;
  &amp;lt;NuxtPage /&amp;gt;
&amp;lt;/NuxtLayout&amp;gt;&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;b&gt;레이아웃을 사용하지 않을 페이지&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734567403410&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;definePageMeta({
  layout: false,
});&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;b&gt;다른 레이아웃을 사용할 페이지&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1734567415251&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;definePageMeta({
  layout: 'footer',
});&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Vue/Nuxt</category>
      <category>definepagemeta</category>
      <category>layout</category>
      <category>nuxt</category>
      <category>vue</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/173</guid>
      <comments>https://zodev.tistory.com/entry/Nuxt-%EC%9D%BC%EB%B6%80-%ED%8E%98%EC%9D%B4%EC%A7%80%EC%97%90%EB%8A%94-Layout-%EC%A0%81%EC%9A%A9-%ED%95%98%EC%A7%80-%EC%95%8A%EA%B8%B0#entry173comment</comments>
      <pubDate>Thu, 19 Dec 2024 09:17:48 +0900</pubDate>
    </item>
    <item>
      <title>[ API ] 카카오 오픈 API 사용하기 / Postman 통한 요청 확인</title>
      <link>https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8</link>
      <description>&lt;h2 id=&quot;-카카오-api-사용하기&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;카카오 API 사용하기&lt;/h2&gt;
&lt;h4 id=&quot;step-1-카카오-developers-사이트-이동&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 1. 카카오 developers 사이트 이동&lt;/h4&gt;
&lt;figure id=&quot;og_1732581839583&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;Kakao Developers&quot; data-og-description=&quot;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&quot; data-og-host=&quot;developers.kakao.com&quot; data-og-source-url=&quot;https://developers.kakao.com/&quot; data-og-url=&quot;https://developers.kakao.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/hGWsg/hyXDdNZdqY/nrTnA0wdWzcojjNfS6irf1/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/0kZCa/hyXDkTTGIG/lTHI93jS2aBDV1ayqElFf0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/e7vhq/hyXDniLUhE/966bi2DKtmZdLMvHYwoXO0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000&quot;&gt;&lt;a href=&quot;https://developers.kakao.com/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.kakao.com/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/hGWsg/hyXDdNZdqY/nrTnA0wdWzcojjNfS6irf1/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/0kZCa/hyXDkTTGIG/lTHI93jS2aBDV1ayqElFf0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000,https://scrap.kakaocdn.net/dn/e7vhq/hyXDniLUhE/966bi2DKtmZdLMvHYwoXO0/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000');&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;Kakao Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.kakao.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;lt; 대표 API 종류 &amp;gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;743&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dexb2j/btsKWSWuKJ6/8k57ikaHTCjeFh471KO3AK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dexb2j/btsKWSWuKJ6/8k57ikaHTCjeFh471KO3AK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dexb2j/btsKWSWuKJ6/8k57ikaHTCjeFh471KO3AK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdexb2j%2FbtsKWSWuKJ6%2F8k57ikaHTCjeFh471KO3AK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1190&quot; height=&quot;743&quot; data-origin-width=&quot;1190&quot; data-origin-height=&quot;743&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-2-내-애플리케이션-추가하기&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 2. 내 애플리케이션 추가하기&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;883&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm7X22/btsKWhPKk6Q/Z503do69Yk0gKzI3VmIe1k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm7X22/btsKWhPKk6Q/Z503do69Yk0gKzI3VmIe1k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm7X22/btsKWhPKk6Q/Z503do69Yk0gKzI3VmIe1k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm7X22%2FbtsKWhPKk6Q%2FZ503do69Yk0gKzI3VmIe1k%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;622&quot; data-origin-width=&quot;993&quot; data-origin-height=&quot;883&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;애플리케이션을 생성하면 앱 키가 발급됨&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;387&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dWyxNs/btsKXIsb8QM/XikfdwagI06dxKywtTuSrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dWyxNs/btsKXIsb8QM/XikfdwagI06dxKywtTuSrk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dWyxNs/btsKXIsb8QM/XikfdwagI06dxKywtTuSrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdWyxNs%2FbtsKXIsb8QM%2FXikfdwagI06dxKywtTuSrk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;387&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;387&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-3-사용할-api-기능-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 3. 사용할 API 기능 확인&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;로컬의 키워드로 장소 검색하기 기능 API 활용&lt;/p&gt;
&lt;figure id=&quot;og_1732581881510&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;Kakao Developers&quot; data-og-description=&quot;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&quot; data-og-host=&quot;developers.kakao.com&quot; data-og-source-url=&quot;https://developers.kakao.com/docs/latest/ko/local/dev-guide#search-by-keyword&quot; data-og-url=&quot;https://developers.kakao.com/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cxbRkG/hyXDiu2pSs/3VEGHR1Kwjz7vx2eLARgZk/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/bCdXL5/hyXDksOHuK/rckTGmvUD13asx24eUSiW1/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000&quot;&gt;&lt;a href=&quot;https://developers.kakao.com/docs/latest/ko/local/dev-guide#search-by-keyword&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.kakao.com/docs/latest/ko/local/dev-guide#search-by-keyword&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cxbRkG/hyXDiu2pSs/3VEGHR1Kwjz7vx2eLARgZk/img.png?width=800&amp;amp;height=400&amp;amp;face=0_0_800_400,https://scrap.kakaocdn.net/dn/bCdXL5/hyXDksOHuK/rckTGmvUD13asx24eUSiW1/img.png?width=3840&amp;amp;height=1000&amp;amp;face=0_0_3840_1000');&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;Kakao Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.kakao.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;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;660&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjZgVG/btsKWLJNDBU/onHkmyYtHZ1bJgOVMRRGF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjZgVG/btsKWLJNDBU/onHkmyYtHZ1bJgOVMRRGF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjZgVG/btsKWLJNDBU/onHkmyYtHZ1bJgOVMRRGF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjZgVG%2FbtsKWLJNDBU%2FonHkmyYtHZ1bJgOVMRRGF0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1236&quot; height=&quot;660&quot; data-origin-width=&quot;1236&quot; data-origin-height=&quot;660&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;➡ 요청과 결과에 대한 모든 정보가 나와있음&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;-postman으로-api-요청-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Postman으로 API 요청 확인&lt;/h2&gt;
&lt;h4 id=&quot;step-4-새-request-생성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 4. 새 request 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-5-요청-메서드--url-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 5. 요청 메서드 &amp;amp; url 확인&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-6-headers에-발급받은-앱-키-작성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 6. headers에 발급받은 앱 키 작성&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&amp;nbsp;KakaoAK 뒤에 본인의 REST API 키 작성&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;320&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/losgx/btsKVuPONXu/Yae8OoqmZzGSbyVtkN0Wak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/losgx/btsKVuPONXu/Yae8OoqmZzGSbyVtkN0Wak/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/losgx/btsKVuPONXu/Yae8OoqmZzGSbyVtkN0Wak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flosgx%2FbtsKVuPONXu%2FYae8OoqmZzGSbyVtkN0Wak%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;320&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;320&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-7-파라미터-입력&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 7. 파라미터 입력&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;검색어의 경우 &lt;span style=&quot;color: #ef5369;&quot;&gt;&lt;b&gt;query&lt;/b&gt; &lt;/span&gt;로 입력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;289&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AGhBW/btsKXrKYXsI/P77ywzJttlDsTPUcwlyHkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AGhBW/btsKXrKYXsI/P77ywzJttlDsTPUcwlyHkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AGhBW/btsKXrKYXsI/P77ywzJttlDsTPUcwlyHkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAGhBW%2FbtsKXrKYXsI%2FP77ywzJttlDsTPUcwlyHkk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1144&quot; height=&quot;289&quot; data-origin-width=&quot;1144&quot; data-origin-height=&quot;289&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-8-결과-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 8. 결과 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;587&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CQbsU/btsKXBtbkyV/NgtGqj4YsdG3Lz0NYc2ik0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CQbsU/btsKXBtbkyV/NgtGqj4YsdG3Lz0NYc2ik0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CQbsU/btsKXBtbkyV/NgtGqj4YsdG3Lz0NYc2ik0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCQbsU%2FbtsKXBtbkyV%2FNgtGqj4YsdG3Lz0NYc2ik0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;455&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;587&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;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>ETC</category>
      <category>API</category>
      <category>Postman</category>
      <category>오블완</category>
      <category>카카오</category>
      <category>티스토리챌린지</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/172</guid>
      <comments>https://zodev.tistory.com/entry/API-%EC%B9%B4%EC%B9%B4%EC%98%A4-%EC%98%A4%ED%94%88-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%ED%86%B5%ED%95%9C-%EC%9A%94%EC%B2%AD-%ED%99%95%EC%9D%B8#entry172comment</comments>
      <pubDate>Wed, 27 Nov 2024 09:06:27 +0900</pubDate>
    </item>
    <item>
      <title>[ API ] 네이버 검색 API 사용하기 / Postman 이용한 JSON 파일 추출</title>
      <link>https://zodev.tistory.com/entry/API-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%EC%9D%B4%EC%9A%A9%ED%95%9C-JSON-%ED%8C%8C%EC%9D%BC-%EC%B6%94%EC%B6%9C</link>
      <description>&lt;h2 id=&quot;네이버-api-사용하기&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;네이버 API 사용하기&lt;/h2&gt;
&lt;h4 id=&quot;step-1-네이버-develpers에서-사용할-api-탐색&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 1. 네이버 developers에서 사용할 API 탐색&lt;/h4&gt;
&lt;figure id=&quot;og_1732580441136&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;NAVER Developers&quot; data-og-description=&quot;네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음&quot; data-og-host=&quot;developers.naver.com&quot; data-og-source-url=&quot;https://developers.naver.com/main/&quot; data-og-url=&quot;https://developers.naver.com/main&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jUrNL/hyXDjtVVDt/i14AnTtgg3MbcKTgsXKUtK/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/VTk2K/hyXDkfhGJy/o2NB5pBtJPLKFvl6z3Y5Q0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492&quot;&gt;&lt;a href=&quot;https://developers.naver.com/main/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://developers.naver.com/main/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jUrNL/hyXDjtVVDt/i14AnTtgg3MbcKTgsXKUtK/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492,https://scrap.kakaocdn.net/dn/VTk2K/hyXDkfhGJy/o2NB5pBtJPLKFvl6z3Y5Q0/img.jpg?width=940&amp;amp;height=492&amp;amp;face=0_0_940_492');&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;NAVER Developers&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네이버 오픈 API들을 활용해 개발자들이 다양한 애플리케이션을 개발할 수 있도록 API 가이드와 SDK를 제공합니다. 제공중인 오픈 API에는 네이버 로그인, 검색, 단축URL, 캡차를 비롯 기계번역, 음&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;developers.naver.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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-2-애플리케이션-등록&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 2. 애플리케이션 등록&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px; background-color: #f6e199;&quot;&gt;이미 등록된 앱이 있다면 생략 가능&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;605&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dwel2b/btsKWINd4Xr/9enkLN5KkUk1BRWMZ2usbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dwel2b/btsKWINd4Xr/9enkLN5KkUk1BRWMZ2usbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dwel2b/btsKWINd4Xr/9enkLN5KkUk1BRWMZ2usbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdwel2b%2FbtsKWINd4Xr%2F9enkLN5KkUk1BRWMZ2usbk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;605&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;605&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-3-등록된-애플리케이션-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 3. 등록된 애플리케이션 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;336&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eug6Ml/btsKV1Gtf2c/OvKuF5iMrPZgoyl8fDk8J1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eug6Ml/btsKV1Gtf2c/OvKuF5iMrPZgoyl8fDk8J1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eug6Ml/btsKV1Gtf2c/OvKuF5iMrPZgoyl8fDk8J1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feug6Ml%2FbtsKV1Gtf2c%2FOvKuF5iMrPZgoyl8fDk8J1%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;336&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;336&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-4-사용할-api-url-및-메서드-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 4. 사용할 API url 및 메서드 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xgQG4/btsKWhCg4XQ/sBr6GVzWQid5tXsJstQ72K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xgQG4/btsKWhCg4XQ/sBr6GVzWQid5tXsJstQ72K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xgQG4/btsKWhCg4XQ/sBr6GVzWQid5tXsJstQ72K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FxgQG4%2FbtsKWhCg4XQ%2FsBr6GVzWQid5tXsJstQ72K%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;427&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;427&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;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;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 id=&quot;-postman을-이용하여-api-요청-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Postman을 이용하여 API 요청 확인&lt;/h2&gt;
&lt;h4 id=&quot;step-5-postman-새로운-request-생성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 5. Postman 새로운 Request 생성&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-6-postman-헤더-작성&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 6. Postman 헤더 작성&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #333333; font-size: 16px; letter-spacing: 0px; background-color: #f6e199;&quot;&gt;애플리케이션의 Client id &amp;amp; secret 정보&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;383&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/I7Wc2/btsKVA3IzH4/DZkShiaChRHK4cyheh6cUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/I7Wc2/btsKVA3IzH4/DZkShiaChRHK4cyheh6cUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/I7Wc2/btsKVA3IzH4/DZkShiaChRHK4cyheh6cUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FI7Wc2%2FbtsKVA3IzH4%2FDZkShiaChRHK4cyheh6cUK%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;383&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;383&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-7-파라미터가-필요한-경우-넣어줌&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 7. 파라미터가 필요한 경우 넣어줌&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock widthContent&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/sQs4E/btsKXqyuTv4/RPG8o3LtzPfa4lPJsBKKH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/sQs4E/btsKXqyuTv4/RPG8o3LtzPfa4lPJsBKKH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/sQs4E/btsKXqyuTv4/RPG8o3LtzPfa4lPJsBKKH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsQs4E%2FbtsKXqyuTv4%2FRPG8o3LtzPfa4lPJsBKKH0%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;1139&quot; height=&quot;288&quot; data-origin-width=&quot;1139&quot; data-origin-height=&quot;288&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-8-결과-확인&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 8. 결과 확인&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;590&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UBVR9/btsKXAgI3mJ/o3ipA2DQbHJGwgGKRrdbbk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UBVR9/btsKXAgI3mJ/o3ipA2DQbHJGwgGKRrdbbk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UBVR9/btsKXAgI3mJ/o3ipA2DQbHJGwgGKRrdbbk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUBVR9%2FbtsKXAgI3mJ%2Fo3ipA2DQbHJGwgGKRrdbbk%2Fimg.png&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; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;501&quot; data-origin-width=&quot;825&quot; data-origin-height=&quot;590&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 id=&quot;step-9-json-파일-추출-선택&quot; style=&quot;background-color: #ffffff; color: #212529; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;step 9. Json 파일 추출 (선택)&lt;/h4&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;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참고로 원 게시글은 velog (내꺼)&lt;/p&gt;
&lt;figure id=&quot;og_1732580771409&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;[API] 네이버 검색 API 사용하기 / Postman 이용한 JSON 파일 추출&quot; data-og-description=&quot;네이버 API 사용하기 step 1. 네이버 develpers에서 사용할 API 탐색 https://developers.naver.com/main/ step 2. 애플리케이션 등록 이미 등록된 앱이 있다면 생략 가능 app1 step 3. 등록된 애플리케이션 확인&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@chyh0218/API-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%EC%9D%B4%EC%9A%A9%ED%95%9C-JSON-%ED%8C%8C%EC%9D%BC-%EC%B6%94%EC%B6%9C&quot; data-og-url=&quot;https://velog.io/@chyh0218/API-네이버-검색-API-사용하기-Postman-이용한-JSON-파일-추출&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/b3BTPG/hyXDeMUlXk/ZhWdK2GwEEGKj8UalGmgDk/img.png?width=1760&amp;amp;height=527&amp;amp;face=0_0_1760_527,https://scrap.kakaocdn.net/dn/bqpNhF/hyXC7NMiYt/yts3g9iFR17UyAKCSkB0N0/img.png?width=1760&amp;amp;height=527&amp;amp;face=0_0_1760_527,https://scrap.kakaocdn.net/dn/bgXypA/hyXDbvTMPH/awY37BeL8AcivsaEK5qDmK/img.png?width=2000&amp;amp;height=525&amp;amp;face=0_0_2000_525&quot;&gt;&lt;a href=&quot;https://velog.io/@chyh0218/API-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%EC%9D%B4%EC%9A%A9%ED%95%9C-JSON-%ED%8C%8C%EC%9D%BC-%EC%B6%94%EC%B6%9C&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@chyh0218/API-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%EC%9D%B4%EC%9A%A9%ED%95%9C-JSON-%ED%8C%8C%EC%9D%BC-%EC%B6%94%EC%B6%9C&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/b3BTPG/hyXDeMUlXk/ZhWdK2GwEEGKj8UalGmgDk/img.png?width=1760&amp;amp;height=527&amp;amp;face=0_0_1760_527,https://scrap.kakaocdn.net/dn/bqpNhF/hyXC7NMiYt/yts3g9iFR17UyAKCSkB0N0/img.png?width=1760&amp;amp;height=527&amp;amp;face=0_0_1760_527,https://scrap.kakaocdn.net/dn/bgXypA/hyXDbvTMPH/awY37BeL8AcivsaEK5qDmK/img.png?width=2000&amp;amp;height=525&amp;amp;face=0_0_2000_525');&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;[API] 네이버 검색 API 사용하기 / Postman 이용한 JSON 파일 추출&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;네이버 API 사용하기 step 1. 네이버 develpers에서 사용할 API 탐색 https://developers.naver.com/main/ step 2. 애플리케이션 등록 이미 등록된 앱이 있다면 생략 가능 app1 step 3. 등록된 애플리케이션 확인&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&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>ETC</category>
      <category>API</category>
      <category>Postman</category>
      <category>네이버</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/171</guid>
      <comments>https://zodev.tistory.com/entry/API-%EB%84%A4%EC%9D%B4%EB%B2%84-%EA%B2%80%EC%83%89-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0-Postman-%EC%9D%B4%EC%9A%A9%ED%95%9C-JSON-%ED%8C%8C%EC%9D%BC-%EC%B6%94%EC%B6%9C#entry171comment</comments>
      <pubDate>Tue, 26 Nov 2024 09:24:45 +0900</pubDate>
    </item>
    <item>
      <title>[ Tailwind CSS ] tailwind directives(@)</title>
      <link>https://zodev.tistory.com/entry/Tailwind-CSS-tailwind-directives</link>
      <description>&lt;h2 data-ke-size=&quot;size26&quot;&gt;@tailwind&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;tailwind의 base, components, utilities, variants 스타일을 적용하기 위해 사용하는 디렉티브&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;/**
 * Tailwind의 기본 스타일과 플러그인이 등록한 모든 기본 스타일을 삽입
 */
@tailwind base;

/**
 * Tailwind의 컴포넌트 클래스와 플러그인이 등록한 모든 컴포넌트 클래스를 삽입
 */
@tailwind components;

/**
 * Tailwind의 유틸리티 클래스와 플러그인이 등록한 모든 유틸리티 클래스를 삽입
 */
@tailwind utilities;

/**
 * 각 클래스의 hover, focus, responsive, dark mode 등 다양한 변형 클래스의 삽입 위치를 제어
 *
 * 생략할 경우 Tailwind는 기본적으로 이러한 클래스를 스타일 시트의 맨 끝에 추가한다
 */
@tailwind variants;&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@layer&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어떤 &amp;ldquo;bucket&amp;rdquo;에 커스텀 스타일을 작성할지&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;ldquo;bucket&amp;rdquo; &amp;rarr; base, components, utilities&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;layer 내부에 작성된 custom CSS는 최종적으로 필드 파일에 포함된다. (사용되었다면)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;hover: focus: md: lg: 와 같은 modifiers들도 사용 가능하다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;@layer base {
  :root {
    --tw-primary-50: #eff7ff;
  }
  h1 {
     @apply text-2xl;
  }
}&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;@apply&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;존재하는 클래스를 custom CSS에 사용하기 위해 사용&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, @apply와 함께 tailwind Class 명으로 custom CSS 작성이 가능하다.&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;너무 많은 apply를 남용하는 것은 좋지 않음&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;공통 스타일 정리 : 반복되는 스타일을 @apply로 정리하여 둔다.&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;@layer components {
  /*
  * Button 스타일
  */
  .btn {
    @apply flex h-35 w-140 cursor-pointer items-center justify-center rounded-[4px] px-20 py-4 disabled:cursor-default;
  }
}&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;
&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>CSS</category>
      <category>directive</category>
      <category>tailwind</category>
      <category>오블완</category>
      <category>티스토리챌린지</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/170</guid>
      <comments>https://zodev.tistory.com/entry/Tailwind-CSS-tailwind-directives#entry170comment</comments>
      <pubDate>Mon, 25 Nov 2024 09:26:03 +0900</pubDate>
    </item>
    <item>
      <title>[ Vue ] Vue 스타일 가이드를 활용한 코딩 컨벤션</title>
      <link>https://zodev.tistory.com/entry/Vue-%EC%BD%94%EB%94%A9-%EC%BB%A8%EB%B2%A4%EC%85%98</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt; Vue 스타일 가이드 &lt;/b&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1732422231138&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;Vue.js&quot; data-og-description=&quot;Vue.js - The Progressive JavaScript Framework&quot; data-og-host=&quot;vuejs.org&quot; data-og-source-url=&quot;https://ko.vuejs.org/style-guide/&quot; data-og-url=&quot;https://vuejs.org/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/bFl4oX/hyXDlY0gQo/5hSyAiHlZCTClvt0oVvpJ0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400&quot;&gt;&lt;a href=&quot;https://ko.vuejs.org/style-guide/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ko.vuejs.org/style-guide/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/bFl4oX/hyXDlY0gQo/5hSyAiHlZCTClvt0oVvpJ0/img.png?width=400&amp;amp;height=400&amp;amp;face=0_0_400_400');&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;Vue.js&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Vue.js - The Progressive JavaScript Framework&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;vuejs.org&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;
&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트 버전업을 하면서 Vue의 스타일 가이드를 참고하여 코딩 컨벤션을 정했다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. prettier 설정 통해 코드 컨벤션 강화 &lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;json&quot;&gt;&lt;code&gt;{
  &quot;semi&quot;: true,                    // 문장 끝에 세미콜론 사용 
  &quot;tabWidth&quot;: 2,                   // 탭 너비는 2칸
  &quot;bracketSpacing&quot;: true,          // 중괄호 안에 양쪽 공백 생성
  &quot;trailingComma&quot;: &quot;all&quot;,          // 후행 쉼표 자동 생성
  &quot;arrowParens&quot;: &quot;always&quot;,         // 화살표 함수 사용 시 괄호 항상 생성
  &quot;singleQuote&quot;: true              // 문자열은 작은 따옴표 사용
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그 외 printWidth&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. setup 설정 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;script 태그 안에 setup 키워드를 작성하기&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;3. 공통 컴포넌트 이름은 Common으로 시작 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;분명한 의미 전달 + template 에서 사용 시 다른 태그들과 구분&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) CommonInputBox, CommonExpansion 등&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;4. 하위 컴포넌트 이름은 페이지명(기능명)으로 시작 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;뷰 스타일 가이드 &lt;span style=&quot;color: #ee2323;&quot;&gt;강력 추천&lt;/span&gt; 수준 - &lt;b&gt;긴밀하게 결합된 컴포넌트 이름&lt;/b&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;/li&gt;
&lt;li&gt;단점 : 컴포넌트 이름이 길어짐&lt;/li&gt;
&lt;li&gt;ex) (상위) SamplePage &amp;rarr; (하위) SampleCondition, SampleContent&lt;/li&gt;
&lt;/ul&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;size18&quot;&gt;&lt;b&gt;5. 디렉티브 약어는 전부 사용 O &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;v-bind &amp;rarr; :&lt;/li&gt;
&lt;li&gt;v-on &amp;rarr; @&lt;/li&gt;
&lt;li&gt;생략할 수 없는 디렉티브는 사용(v-if, v-for 등)&lt;/li&gt;
&lt;/ul&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;size18&quot;&gt;&lt;b&gt;6. style 파일 작성 시 요소선택자(button, input 등)은 피하기 &lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;스타일 오버라이딩 위험&lt;/li&gt;
&lt;li&gt;성능 문제 (요소선택자는 클래스 선택자에 비해 느림)&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #1b711d;&quot;&gt;예외적으로 테이블 관련 요소선택자(td, th, tr) 등은 사용 가능&lt;/span&gt; &amp;rarr; 반드시 특정 클래스 하위에 테이블 요소 CSS 작성하기&lt;/p&gt;
&lt;pre class=&quot;css&quot; data-ke-language=&quot;css&quot;&gt;&lt;code&gt;.class-name {
	td {
		...
	}
	tr {
		...
	}
}&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;7. 컴포넌트 범위 스타일 적용 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vue 스타일 가이드 &lt;span style=&quot;color: #ee2323;&quot;&gt;필수&lt;/span&gt; 수준&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;lt;style scoped&amp;gt; 속성을 사용하여 style 태그 내부에 적용한 CSS가 컴포넌트 범위 안에서만 사용되도록 함&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전역적으로 사용해야 하는 CSS 속성의 경우 css 폴더 내부에 따로 정의&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;8. 함수는 &lt;u&gt;화살표 함수&lt;/u&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;&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;size18&quot;&gt;&lt;b&gt;9. 인터페이스는 &lt;u&gt;파스칼 케이스&lt;/u&gt;로 의미 분명하게 작성 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;헝가리안 네이밍(I) 채택 X&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;10. 인터페이스 선언 방식 &lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;공통 인터페이스의 경우에는 declare로 선언&lt;/li&gt;
&lt;li&gt;기능별 인터페이스의 경우에는 모듈화해서 사용(export/import)&lt;/li&gt;
&lt;/ul&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;size18&quot;&gt;&lt;b&gt;11. emit 네이밍 규칙 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;동작:데이터&quot; 형식으로 작성&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;ex) update: type, request:date 등&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;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;12. 셀프 클로징 컴포넌트 &lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vue 스타일 가이드 &lt;span style=&quot;color: #ee2323;&quot;&gt;강력 추천&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;ex) &amp;lt;CommonInput /&amp;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;&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;size18&quot;&gt;&lt;b&gt;13. 템플릿 내 컴포넌트 이름은 &lt;u&gt;파스칼케이스&lt;/u&gt; 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;vue 스타일 가이드 강력 추천 수준&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;&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>Vue</category>
      <category>vue</category>
      <category>오블완</category>
      <category>컨벤션</category>
      <category>티스토리챌린지</category>
      <author>ZoD</author>
      <guid isPermaLink="true">https://zodev.tistory.com/169</guid>
      <comments>https://zodev.tistory.com/entry/Vue-%EC%BD%94%EB%94%A9-%EC%BB%A8%EB%B2%A4%EC%85%98#entry169comment</comments>
      <pubDate>Sun, 24 Nov 2024 13:32:33 +0900</pubDate>
    </item>
  </channel>
</rss>