{"id":2429,"date":"2018-11-20T15:57:09","date_gmt":"2018-11-20T15:57:09","guid":{"rendered":"https:\/\/ionicframework.com\/?p=2429"},"modified":"2023-07-18T13:02:37","modified_gmt":"2023-07-18T17:02:37","slug":"a-vue-from-ionic","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/a-vue-from-ionic","title":{"rendered":"A Vue from Ionic"},"content":{"rendered":"<blockquote><p>Ionic Vue has reached Release Candidate status! Check out the <a href=\"https:\/\/ionicframework.com\/blog\/announcing-the-new-ionic-vue-beta\/\">latest details here<\/a>.<\/p><\/blockquote>\n<p>Last week, we gave the first official preview of Vue support for Ionic Framework at <a href=\"https:\/\/vuetoronto.com\/\" target=\"_blank\" rel=\"noopener\">VueConf Toronto<\/a>. Our very own Josh Thomas (<a href=\"https:\/\/twitter.com\/jthoms1\" target=\"_blank\" rel=\"noopener\">@jthoms1<\/a>) shared some insight into the first alpha release of <code>@ionic\/vue<\/code> and why we think Vue + Ionic Framework makes a perfect match for developers. But before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.<\/p>\n<p><!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" class=\"aligncenter size-large wp-image-2433 lazyload\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-1024x356.jpg\" alt=\"\" data-srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-1024x356.jpg 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-300x104.jpg 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-768x267.jpg 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV.jpg 1800w\" data-sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 1024px; --smush-placeholder-aspect-ratio: 1024\/356;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"356\" class=\"aligncenter size-large wp-image-2433\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-1024x356.jpg\" alt=\"\" srcset=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-1024x356.jpg 1024w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-300x104.jpg 300w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV-768x267.jpg 768w, https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/DsJ-sOBVsAApGuV.jpg 1800w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/p>\n<h3>What is Ionic Framework?<\/h3>\n<p>If you\u2019re already using Vue, you might be wondering: What is the Ionic Framework and why should I care?<\/p>\n<p>Well, let\u2019s take a step back and just say, \u201cHello, we\u2019re the Ionic!\u201d We\u2019re about 5 million apps strong, with companies like GE, Nationwide, and Untappd using our code.<\/p>\n<p>We&#8217;re best known for our open source Framework, which at its core is a collection of UI components for building high-quality, cross-platform apps. These components are all built with HTML, CSS, and JavaScript and can easily be deployed natively to iOS and Android devices, desktop with Electron, or to the web as a progressive web app (PWA). Why does this matter? Because the web is awesome! Building with web technologies allows developers to reuse their existing skills for native development, while also depending on the stability of the web. Meaning, you don\u2019t have to learn any special tools, use a subset of CSS, or rewrite portions of your app when using Ionic\u2014It just works across multiple platforms all from one codebase.<\/p>\n<p>And because the Ionic Framework is focused most on the Component\/UI layer, you can still keep your framework\u2019s build tools and CLI. Our #1 goal is to care about how your apps look and behave, not how they\u2019re built. Now historically, Ionic Framework was built to only work with Angular. This is why we&#8217;re excited to share the details about <code>@ionic\/vue<\/code>.<\/p>\n<h3>The Early Test<\/h3>\n<p>One of the main intentions when building Ionic 4 was to be framework agnostic. That\u2019s because we think developers should be able to pick the framework that fits <em>their<\/em> needs and not the other way around. But we soon realized that in order for there to be a great developer experience, we needed to add an integration layer.<\/p>\n<p>For example with Angular, we created <code>@ionic\/angular<\/code> to make our components more compatible with the type checking system, but what would this look like for other frameworks like Vue?<\/p>\n<p>Some of the first demos of Ionic Framework and Vue together literally used a script tag and link for CSS in the <code>index.html<\/code>. And while this worked, it definitely did not provide the typical experience we saw with other packages in the Vue ecosystem.<\/p>\n<blockquote><p>If you&#8217;re interested, you can see that first Ionic Framework and Vue demo <a href=\"https:\/\/github.com\/mhartington\/Star-Track-vue\" target=\"_blank\" rel=\"noopener\">here<\/a><\/p><\/blockquote>\n<h3>The Community\u2019s Support<\/h3>\n<p>Around this time, we also started connecting with the folks over at <a href=\"https:\/\/moduscreate.com\" target=\"_blank\" rel=\"noopener\">Modus Create<\/a>, specifically <a href=\"https:\/\/twitter.com\/ggrgur\" target=\"_blank\" rel=\"noopener\">Grgur Grisogono<\/a> and <a href=\"https:\/\/twitter.com\/michaeltintiuc\" target=\"_blank\" rel=\"noopener\">Michael Tintiuc<\/a>. The team was eager to get Vue support in the Ionic Framework and provide a proper developer experience, so it was with their effort that we saw the first version of the <code>ionic\/vue<\/code> wrappers start to take shape. Additionally, to better support the greater community, the Modus team sent a pull request to make the wrapper part of our core repository.<\/p>\n<p>But they weren&#8217;t <em>just<\/em> working on the integration layer. To prove the integration worked well, the Modus team also built an app using Ionic Framework, Vue, and <a href=\"https:\/\/capacitorjs.com\" target=\"_blank\" rel=\"noopener\">Capacitor<\/a>, called <a href=\"https:\/\/beep.modus.app\" target=\"_blank\" rel=\"noopener\">Beep<\/a>. Beep is an app that allows you to check if your email has been part of any data breaches (using the HaveIBeenPwned API). It\u2019s now been successfully launched and is available on the <a href=\"https:\/\/itunes.apple.com\/us\/app\/beep-account-security-scanner\/id1434675665?ls=1&amp;mt=8\" target=\"_blank\" rel=\"noopener\">iOS App Store<\/a>, <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=app.modus.beep\" target=\"_blank\" rel=\"noopener\">Google Play<\/a>, and as a <a href=\"https:\/\/beep.modus.app\" target=\"_blank\" rel=\"noopener\">PWA<\/a>.<\/p>\n<p>To learn more about Beep, check out this <a href=\"https:\/\/moduscreate.com\/blog\/using-ionic-4-in-vue-applications-with-beep\/\" target=\"_blank\" rel=\"noopener\">blog post from the Modus team.<\/a><\/p>\n<h3>Simplicity from the Start<\/h3>\n<p>We\u2019re excited to announce here, just as we did at VueConf Toronto, that <code>@ionic\/vue<\/code> is now available in alpha (0.0.1). If you\u2019re interested, you can also view Josh\u2019s presentation from the conference <a href=\"https:\/\/www.slideshare.net\/IonicFramework\/a-vue-from-ionic\" target=\"_blank\" rel=\"noopener\">here<\/a>.<\/p>\n<p>To get started with it just simply install the package in your Vue project:<\/p>\n<pre><code class=\"language-bash\">npm install @ionic\/vue\n\n<\/code><\/pre>\n<p>Then, from your <code>main.js<\/code>, you can import the library and use it:<\/p>\n<pre><code class=\"language-js\">import Vue from &#039;vue&#039;;\nimport App from &#039;.\/App.vue&#039;;\n\nimport { Ionic } from &#039;@ionic\/vue&#039;;\n\nVue.use(Ionic);\nnew Vue({\n  render: h =&gt; h(App)\n}).$mount(&#039;#app&#039;);\n<\/code><\/pre>\n<p>And that&#8217;s it, you\u2019re all set up!<\/p>\n<p>With this new functionality, it&#8217;s now quite simple to add Ionic Framework to any of your Vue projects and have access to all of APIs in a Vue-friendly format.<\/p>\n<p>For example, to handle property binding and event binding in Vue, we can use the <code>:prop<\/code> and <code>@eventName<\/code> syntax.<\/p>\n<pre><code class=\"language-html\">&lt;ion-content&gt;\n  &lt;ion-refresher slot=&quot;fixed&quot; @ionRefresh=&quot;doRefresh($event)&quot;&gt;\n    &lt;ion-refresher-content\n      :refreshingSpinner=&quot;dynamicIcon&quot;\n      :refreshingText=&quot;refreshMessage&quot;\n    &gt;\n    &lt;\/ion-refresher-content&gt;\n  &lt;\/ion-refresher&gt;\n&lt;\/ion-content&gt;\n<\/code><\/pre>\n<p>Want to display an overlay in your app, like a loading indicator? This can be done through the global <code>$ionic<\/code> object in Vue.<\/p>\n<pre><code class=\"language-js\">export default {\n  name: &#039;LoadingScreen&#039;,\n  methods: {\n    async showModal() {\n      const loading = await this.$ionic.loadingController.create({\n        spinner: &#039;hide&#039;,\n        duration: 5000,\n        message: &#039;Please wait...&#039;,\n        translucent: true,\n        cssClass: &#039;custom-class custom-loading&#039;\n      });\n      loading.present();\n    }\n  }\n};\n<\/code><\/pre>\n<p>We\u2019re happy to say that this integration makes working with Ionic&#8217;s APIs feel like working with any typical Vue library, like the Vue Router or Vuex.<\/p>\n<h3>What&#8217;s Next?<\/h3>\n<p>While it may still be a bit early for <code>@ionic\/vue<\/code> and there\u2019s a lot more to test before we recommend it for production, we\u2019re happy to roll this out to the community and open it up for your help.<\/p>\n<p>We&#8217;ve always said that Ionic&#8217;s biggest asset is our large, passionate community and now <strong>we need your feedback<\/strong>. If you&#8217;re a big Vue fan and want to give Ionic Framework a try, let us know how it goes. You can reach out to us on the <a href=\"https:\/\/forum.ionicframework.com\/\" target=\"_blank\" rel=\"noopener\">forum<\/a>, <a href=\"https:\/\/ionicworldwide.herokuapp.com\/\" target=\"_blank\" rel=\"noopener\">slack<\/a>, or <a href=\"http:\/\/github.com\/ionic-team\/ionic\" target=\"_blank\" rel=\"noopener\">Github<\/a>.<\/p>\n<p>We think this is a great first step for <code>@ionic\/vue<\/code> and hope you do too. It\u2019s an exciting time to building apps with Ionic Framework and can\u2019t wait to see what you create!<\/p>\n<p>Until next time, cheers! \ud83c\udf7b<\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/ionic-team\/ionic\/tree\/master\/vue\">Ionic Vue<\/a><\/li>\n<li><a href=\"https:\/\/beta.ionicframework.com\/docs\/\">Ionic Documentation<\/a><\/li>\n<li><a href=\"https:\/\/ionicworldwide.herokuapp.com\/\">Ionic Worldwide Slack<\/a><\/li>\n<li><a href=\"https:\/\/forum.ionicframework.com\/\">Ionic Forum<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Ionic Vue has reached Release Candidate status! Check out the latest details here. Last week, we gave the first official preview of Vue support for Ionic Framework at VueConf Toronto. Our very own Josh Thomas (@jthoms1) shared some insight into the first alpha release of @ionic\/vue and why we think Vue + Ionic Framework makes [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":2430,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"publish_to_discourse":"","publish_post_category":"","wpdc_auto_publish_overridden":"","wpdc_topic_tags":"","wpdc_pin_topic":"","wpdc_pin_until":"","discourse_post_id":"","discourse_permalink":"","wpdc_publishing_response":"","wpdc_publishing_error":"","_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120],"tags":[3,147],"class_list":["post-2429","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","tag-ionic","tag-vue"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v23.0 (Yoast SEO v23.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Vue from Ionic - Ionic Blog<\/title>\n<meta name=\"description\" content=\"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Vue from Ionic\" \/>\n<meta property=\"og:description\" content=\"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-11-20T15:57:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-18T17:02:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1440\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Mike Hartington\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mhartington\" \/>\n<meta name=\"twitter:site\" content=\"@ionicframework\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mike Hartington\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\"},\"author\":{\"name\":\"Mike Hartington\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\"},\"headline\":\"A Vue from Ionic\",\"datePublished\":\"2018-11-20T15:57:09+00:00\",\"dateModified\":\"2023-07-18T17:02:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\"},\"wordCount\":958,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"keywords\":[\"Ionic\",\"Vue\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\",\"url\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\",\"name\":\"A Vue from Ionic - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"datePublished\":\"2018-11-20T15:57:09+00:00\",\"dateModified\":\"2023-07-18T17:02:37+00:00\",\"description\":\"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/a-vue-from-ionic\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"width\":1440,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/ionic.io\/blog\/a-vue-from-ionic#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Vue from Ionic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/ionic.io\/blog\/#website\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"name\":\"ionic.io\/blog\",\"description\":\"Build amazing native and progressive web apps with the web\",\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/ionic.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/ionic.io\/blog\/#organization\",\"name\":\"Ionic\",\"url\":\"https:\/\/ionic.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png\",\"width\":1920,\"height\":854,\"caption\":\"Ionic\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ionicframework\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\",\"name\":\"Mike Hartington\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"contentUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png\",\"caption\":\"Mike Hartington\"},\"description\":\"Director of Developer Relations\",\"sameAs\":[\"https:\/\/twitter.com\/mhartington\",\"https:\/\/x.com\/mhartington\"],\"url\":\"https:\/\/ionic.io\/blog\/author\/mike\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A Vue from Ionic - Ionic Blog","description":"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/ionic.io\/blog\/a-vue-from-ionic","og_locale":"en_US","og_type":"article","og_title":"A Vue from Ionic","og_description":"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.","og_url":"https:\/\/ionic.io\/blog\/a-vue-from-ionic","og_site_name":"Ionic Blog","article_published_time":"2018-11-20T15:57:09+00:00","article_modified_time":"2023-07-18T17:02:37+00:00","og_image":[{"width":1440,"height":800,"url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","type":"image\/png"}],"author":"Mike Hartington","twitter_card":"summary_large_image","twitter_creator":"@mhartington","twitter_site":"@ionicframework","twitter_misc":{"Written by":"Mike Hartington","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic"},"author":{"name":"Mike Hartington","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b"},"headline":"A Vue from Ionic","datePublished":"2018-11-20T15:57:09+00:00","dateModified":"2023-07-18T17:02:37+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic"},"wordCount":958,"commentCount":7,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","keywords":["Ionic","Vue"],"articleSection":["Announcements"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/a-vue-from-ionic#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic","url":"https:\/\/ionic.io\/blog\/a-vue-from-ionic","name":"A Vue from Ionic - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","datePublished":"2018-11-20T15:57:09+00:00","dateModified":"2023-07-18T17:02:37+00:00","description":"Before we dive into the nitty-gritty of it all, it\u2019s important to first understand the history of Ionic Framework and Vue.","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/a-vue-from-ionic"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#primaryimage","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","width":1440,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/ionic.io\/blog\/a-vue-from-ionic#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"A Vue from Ionic"}]},{"@type":"WebSite","@id":"https:\/\/ionic.io\/blog\/#website","url":"https:\/\/ionic.io\/blog\/","name":"ionic.io\/blog","description":"Build amazing native and progressive web apps with the web","publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ionic.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ionic.io\/blog\/#organization","name":"Ionic","url":"https:\/\/ionic.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2020\/10\/white-on-color.png","width":1920,"height":854,"caption":"Ionic"},"image":{"@id":"https:\/\/ionic.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ionicframework"]},{"@type":"Person","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b","name":"Mike Hartington","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","contentUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/08\/mike-headshot-2-smaller-150x150.png","caption":"Mike Hartington"},"description":"Director of Developer Relations","sameAs":["https:\/\/twitter.com\/mhartington","https:\/\/x.com\/mhartington"],"url":"https:\/\/ionic.io\/blog\/author\/mike"}]}},"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","_links":{"self":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2429","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/comments?post=2429"}],"version-history":[{"count":1,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2429\/revisions"}],"predecessor-version":[{"id":5500,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2429\/revisions\/5500"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media\/2430"}],"wp:attachment":[{"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/media?parent=2429"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=2429"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=2429"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}