{"componentChunkName":"component---src-templates-blog-post-js","path":"/vue/vue-js-네임드-라우트/","result":{"data":{"site":{"siteMetadata":{"title":"Bottlehs Tech Blog","description":"웹·앱·AI 개발자 전병훈(bottlehs)의 기술 블로그. AI·LLM, JavaScript·Vue, Spring Boot, 알고리즘, 블록체인 실무 가이드를 다룹니다","siteUrl":"https://www.bottlehs.dev","author":{"name":"Jeon Byung Hun","summary":"개발을 즐기는 bottlehs - Engineer, MS, AI, FE, BE, OS, IOT, Blockchain, 설계, 테스트"},"social":{"github":"bottlehs","codepen":"bottlehs"}}},"markdownRemark":{"id":"dffe567a-ae3c-575e-b141-04f5d88ed64c","excerpt":"Vue Js 뷰 네임드 라우트 뷰 네임드 라우트(Named Routes) 라우트에 연결하거나 탐색을 수행 할 때 이름이 있는 라우트를 사용할수 있다. 사용 법은 routes 에 name…","html":"<p><img src=\"/assets/vue-logo.png\" alt=\"Vue Js 뷰 네임드 라우트\" title=\"Vue Js 뷰 네임드 라우트\"></p>\n<h2 id=\"뷰-네임드-라우트named-routes\" style=\"position:relative;\"><a href=\"#%EB%B7%B0-%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8named-routes\" aria-label=\"뷰 네임드 라우트named routes permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>뷰 네임드 라우트(Named Routes)</h2>\n<p>라우트에 연결하거나 탐색을 수행 할 때 이름이 있는 라우트를 사용할수 있다. 사용 법은 routes 에 name 옵션을 지정 하면 된다. 라우트 관리가 편리 하다 라는 장점이 있다. 예를 들어 아래와 같이 생각해 보도록 하자.</p>\n<p>아래와 같은 라우터가 있고, 뷰 여러 컴포넌트에 <code class=\"language-text\">&lt;router-link to=\"/user/1\">User 1&lt;/router-link></code> 와 같이 라우터 이름을 사용하지 않고 url 을 입력하여 관리 한다고 가정 했을때 만약 user/1 에서 user/profile/1 로 라우터가 변경 되어야 한다면 모든 컴포넌트 url 을 일일이 변경해 줘야할것 이다. 그런데 이러한 부분을 네임드 라우트 를 활용 하면 쉽게 변경이 가능하다.</p>\n<p><code class=\"language-text\">user/1 user/2 user/3</code></p>\n<h2 id=\"네임드-라우트-사용에-따른-예시\" style=\"position:relative;\"><a href=\"#%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8-%EC%82%AC%EC%9A%A9%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%98%88%EC%8B%9C\" aria-label=\"네임드 라우트 사용에 따른 예시 permalink\" class=\"anchor-header before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>네임드 라우트 사용에 따른 예시</h2>\n<p><strong>user/1</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> routes <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token operator\">...</span> code\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">path</span><span class=\"token operator\">:</span> <span class=\"token string\">\"user/:id\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">name</span><span class=\"token operator\">:</span> <span class=\"token string\">\"User\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token function-variable function\">component</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"User.vue\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token operator\">...</span> code\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>router-link</span> <span class=\"token attr-name\">to</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>/user/1<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>User 1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>router-link</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>router-link</span> <span class=\"token attr-name\">:to</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>{ name: 'user', params: { id: '1' } }<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>User 1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>router-link</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p><strong>user/profile/1</strong></p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre class=\"language-javascript\"><code class=\"language-javascript\"><span class=\"token keyword\">const</span> routes <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token operator\">...</span> code\n  <span class=\"token punctuation\">{</span>\n    <span class=\"token literal-property property\">path</span><span class=\"token operator\">:</span> <span class=\"token string\">\"user/profile/:id\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token literal-property property\">name</span><span class=\"token operator\">:</span> <span class=\"token string\">\"User\"</span><span class=\"token punctuation\">,</span>\n    <span class=\"token function-variable function\">component</span><span class=\"token operator\">:</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token operator\">=></span> <span class=\"token keyword\">import</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"User.vue\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span>\n  <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n  <span class=\"token operator\">...</span> code\n<span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>router-link</span> <span class=\"token attr-name\">to</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>/user/profile/1<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>User 1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>router-link</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre class=\"language-html\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>router-link</span> <span class=\"token attr-name\">:to</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>{name:<span class=\"token punctuation\">\"</span></span><span class=\"token attr-name\">user\",</span> <span class=\"token attr-name\">params</span> <span class=\"token attr-name\">:</span> <span class=\"token attr-name\">{</span> <span class=\"token attr-name\">id</span> <span class=\"token attr-name\">:</span> <span class=\"token attr-name\">1</span> <span class=\"token attr-name\">}}\"</span><span class=\"token punctuation\">></span></span>User 1<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>router-link</span><span class=\"token punctuation\">></span></span></code></pre></div>\n<p>차이를 보면 url 이 변경 되었을때 네임드 라우트를 사용 했을 경우 route 인스턴스만 수정해 주면 되는걸 확인할수 있다.\\</p>\n<p><img src=\"/assets/vue-js-vue-router-named-routes.png\" alt=\"Vue Js Vue Named Routes Demo\" title=\"Vue Js Vue Named Routes Demo\"></p>\n<p>구현 예시는 중첩 라우터와 동일 하기 때문에 생략 하도록 하겠다.</p>\n<p>추가로 “네임드 뷰 (Named View)” 라는 개념이 있는데 이부분은 각자 REST API 를 활용한 CRUD 개발 과정에서 다루도록 하겠다.</p>","tableOfContents":"<ul>\n<li><a href=\"/vue/vue-js-%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8/#%EB%B7%B0-%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8named-routes\">뷰 네임드 라우트(Named Routes)</a></li>\n<li><a href=\"/vue/vue-js-%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8/#%EB%84%A4%EC%9E%84%EB%93%9C-%EB%9D%BC%EC%9A%B0%ED%8A%B8-%EC%82%AC%EC%9A%A9%EC%97%90-%EB%94%B0%EB%A5%B8-%EC%98%88%EC%8B%9C\">네임드 라우트 사용에 따른 예시</a></li>\n</ul>","wordCount":{"words":158},"fields":{"slug":"/vue/vue-js-네임드-라우트/","image":"/assets/vue-logo.png","faq":[]},"frontmatter":{"title":"Vue Js 뷰 네임드 라우트","date":"2021년 4월 4일","dateISO":"2021-04-04T15:11:34.709Z","updatedISO":null,"category":"vue","description":"라우트에 연결하거나 탐색을 수행 할 때 이름이 있는 라우트를 사용할수 있다. 사용 법은 routes 에 name 옵션을 지정 하면 된다. 라우트 관리가 편리 하다 라는 장점이 있다.","tags":["vue","javascript","framework","frontend","web","router","named-routes"]}}},"pageContext":{"slug":"/vue/vue-js-네임드-라우트/","previous":{"fields":{"slug":"/vue/vue-js-히스토리-관리/"},"frontmatter":{"title":"Vue Js 히스토리 관리","tags":["vue","javascript","framework","frontend","web","router"]}},"next":{"fields":{"slug":"/vue/vue-js-vuex의-개념-및-구조의-이해/"},"frontmatter":{"title":"Vue Js Vuex의 개념 및 구조의 이해","tags":["vue","javascript","framework","frontend","web","router"]}}}},"staticQueryHashes":["213619243","3262363727"]}