{"id":2690,"date":"2019-04-03T14:41:45","date_gmt":"2019-04-03T14:41:45","guid":{"rendered":"https:\/\/ionicframework.com\/?p=2690"},"modified":"2020-10-15T22:34:21","modified_gmt":"2020-10-15T22:34:21","slug":"announcing-the-ionic-vue-beta","status":"publish","type":"post","link":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta","title":{"rendered":"Announcing the Ionic Vue Beta"},"content":{"rendered":"<p><em>2020-09-09 Update: We&#8217;ve released a (new) new beta of Ionic Vue based on Vue 3 (<a href=\"https:\/\/ionicframework.com\/blog\/announcing-the-new-ionic-vue-beta\/\">check it out!<\/a>). The following blog post is based on the old Vue 2 version.<\/em><\/p>\n<p>Last week, I had the privilege to speak at the second VueConf USA in sunny Tampa, Florida. On behalf of the whole Ionic team, I was really excited to present a full talk and also get to know more members of the Vue community. And, with all of the excitement around Vue and VueConf, we decided that this was the perfect place to release the beta for <code>@ionic\/vue<\/code>! So let&#8217;s dive right into that bit.<\/p>\n<p><!--more--><\/p>\n<h2>What is Ionic?<\/h2>\n<p>If you\u2019re already using Vue, you might be wondering, what is Ionic and why should I care?<\/p>\n<p>Well, let\u2019s take a step back and just say, \u201cHello, we\u2019re Ionic!\u201d We\u2019re about 5 million apps (and users) strong, with companies like Nationwide, <a href=\"https:\/\/ionicframework.com\/resources\/case-studies\/marketwatch\" target=\"_blank\" rel=\"noopener\">Marketwatch<\/a>, and <a href=\"https:\/\/ionicframework.com\/resources\/case-studies\/sworkit\" target=\"_blank\" rel=\"noopener\">Sworkit<\/a> using our code.<\/p>\n<p>We\u2019re best known for our popular open source Framework, which at its core is a collection of UI components for building high-quality, cross-platform hybrid apps. All of these components are built with HTML, CSS, and JavaScript and can be easily deployed natively to iOS and Android devices, to desktop with Electron, or to the web as a progressive web app (PWA).<\/p>\n<p>And, because the Ionic Framework is focused on the Component\/UI layer, you can still keep your framework\u2019s build tools and CLI. Our main goal is to care about how your apps look and behave, not how they\u2019re built. In the past, Ionic Framework has been built only supporting Angular. While we still love and support Angular, we&#8217;re also opening up to other tools in the front-end ecosystem. This is why we\u2019re excited to share the details about <code>@ionic\/vue<\/code>.<\/p>\n<h2>Getting Started<\/h2>\n<p>Getting started with Vue and Ionic is fairly straightforward if you&#8217;ve used Vue before. We first need to create a basic Vue project with the CLI.<\/p>\n<pre><code class=\"language-shell\">npm install -g @vue\/cli\nvue create my-vue-app\n\ncd my-vue-app\n<\/code><\/pre>\n<p>Currently, we have a dependency on vue-router, so during the prompt selection in <code>vue create<\/code>, be sure to select vue-router, or run:<\/p>\n<pre><code class=\"language-shell\">vue add router\n<\/code><\/pre>\n<p>From here, we can install <code>@ionic\/vue<\/code> and add it to our project<\/p>\n<pre><code class=\"language-shell\">npm install @ionic\/vue\n<\/code><\/pre>\n<p>Once the install is finished we have access to the <code>Ionic<\/code> plugin and can add it to our main.js.<\/p>\n<pre><code class=\"language-js\">import Vue from &#039;vue&#039;;\nimport App from &#039;.\/App.vue&#039;;\nimport router from &#039;.\/router&#039;;\n\nimport Ionic from &#039;@ionic\/vue&#039;;\nimport &#039;@ionic\/core\/css\/ionic.bundle.css&#039;;\n\nVue.use(Ionic);\nVue.config.productionTip = false;\n\nnew Vue({\n  router,\n  render: h =&gt; h(App)\n}).$mount(&#039;#app&#039;);\n<\/code><\/pre>\n<p>From here, we now have access to all of Ionic&#8217;s components.<\/p>\n<pre><code class=\"language-vue\">&lt;template&gt;\n  &lt;div class=&quot;ion-page&quot;&gt;\n    &lt;ion-header&gt;\n      &lt;ion-toolbar&gt;\n        &lt;ion-title&gt;Hello World&lt;\/ion-title&gt;\n      &lt;\/ion-toolbar&gt;\n    &lt;\/ion-header&gt;\n    &lt;ion-content class=&quot;ion-padding&quot;&gt;\n      &lt;h1&gt;Welcome To @ionic\/vue&lt;\/h1&gt;\n      &lt;img alt=&quot;Vue logo&quot; src=&quot;..\/assets\/logo.png&quot;&gt;\n    &lt;\/ion-content&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: &quot;home&quot;,\n};\n&lt;\/script&gt;\n<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"648\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/Screen-Shot-2019-04-02-at-2.49.19-PM-e1554232266225.png\" alt=\"\" class=\"aligncenter size-full wp-image-2698 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 352px; --smush-placeholder-aspect-ratio: 352\/648;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"648\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/Screen-Shot-2019-04-02-at-2.49.19-PM-e1554232266225.png\" alt=\"\" class=\"aligncenter size-full wp-image-2698\" \/><\/noscript><\/p>\n<p>And that&#8217;s it!<\/p>\n<h2>Building on Vue Router<\/h2>\n<p>Like the Angular and React versions of Ionic, we chose to use the official router that&#8217;s provided with Vue, <code>vue-router<\/code>. In order to handle Ionic&#8217;s animations though, we&#8217;ve extended the Router&#8217;s API and have created an <code>ion-vue-router<\/code> component based on the default router-view. Working off our basic starter project, we can modify <code>App.vue<\/code> and use <code>ion-vue-router<\/code> and update <code>router.js<\/code> to use the <code>IonicVueRouter<\/code> class.<\/p>\n<p><strong>src\/router.js<\/strong><\/p>\n<pre><code class=\"language-js\">import Vue from &#039;vue&#039;;\nimport Home from &#039;.\/views\/Home.vue&#039;;\nimport { IonicVueRouter } from &#039;@ionic\/vue&#039;;\n\nVue.use(IonicVueRouter);\n\nexport default new IonicVueRouter({\n  mode: &#039;history&#039;,\n  base: process.env.BASE_URL,\n  routes: [\n    {\n      path: &#039;\/&#039;,\n      name: &#039;home&#039;,\n      component: Home\n    },\n    {\n      path: &#039;\/about&#039;,\n      name: &#039;about&#039;,\n      component: () =&gt;\n        import(\/* webpackChunkName: &quot;about&quot; *\/ &#039;.\/views\/About.vue&#039;)\n    }\n  ]\n});\n<\/code><\/pre>\n<p>What is important to note is that instead of creating a new <code>Router<\/code> instance from <code>vue-router<\/code>, we use <code>IonicVueRouter<\/code>. Since this is built off the <code>Router<\/code> API, we&#8217;re able to reuse all of the features that you would expect, like Lazy Loading or navigation guards.<\/p>\n<p>In <code>App.vue<\/code>, we simply use <code>ion-vue-router<\/code> the same way we would use the default <code>router-view<\/code>.<\/p>\n<p><strong>src\/App.vue<\/strong><\/p>\n<pre><code class=\"language-vue\">&lt;template&gt;\n  &lt;div id=&quot;app&quot;&gt;\n    &lt;ion-app&gt;\n      &lt;ion-vue-router \/&gt;\n    &lt;\/ion-app&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"526\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/ion-vue-router-2.gif\" alt=\"\" class=\"aligncenter size-full wp-image-2700 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 352px; --smush-placeholder-aspect-ratio: 352\/526;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"526\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/ion-vue-router-2.gif\" alt=\"\" class=\"aligncenter size-full wp-image-2700\" \/><\/noscript><\/p>\n<p>The router integration is currently one place where we&#8217;d love to get feedback from the community and see where things could be improved, so please do not hesitate to reach out!<\/p>\n<h3>Doing Things the Vue Way<\/h3>\n<p><code>ionic\/vue<\/code> includes support for almost every Ionic component we have. So all your HTML will still feel familiar, but will use Vue&#8217;s template 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>Ionic\u2019s virtual scroll component is currently not included in the beta release.<\/p>\n<p>Overlay components, like Modals, are created dynamically using the <code>$ionic<\/code> object in Vue.<\/p>\n<pre><code class=\"language-js\">import Modal from &quot;@\/components\/Modal.vue&quot;;\nexport default {\n  name: &quot;home&quot;,\n  methods: {\n    showModal: async function() {\n      const modal = await this.$ionic.modalController.create({\n        component: Modal,\n        componentProps: {\n          propsData: {\n            userData: Math.round(Math.random() * 100)\n          }\n        }\n      });\n      await modal.present();\n    }\n  }\n};\n<\/code><\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"526\" data-src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/ion-vue-modal.gif\" alt=\"\" class=\"aligncenter size-full wp-image-2699 lazyload\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" style=\"--smush-placeholder-width: 352px; --smush-placeholder-aspect-ratio: 352\/526;\" \/><noscript><img loading=\"lazy\" decoding=\"async\" width=\"352\" height=\"526\" src=\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2019\/04\/ion-vue-modal.gif\" alt=\"\" class=\"aligncenter size-full wp-image-2699\" \/><\/noscript><\/p>\n<p>The <code>$ionic<\/code> object provides controllers for Modals, Alerts, and the rest of the overlay components.<\/p>\n<h3>What&#8217;s Next?<\/h3>\n<p>With beta, <code>ionic\/vue<\/code> is fairly stable, but does have room for improvements. Some areas we&#8217;re looking for feedback are:<\/p>\n<ul>\n<li>Router Integration<\/li>\n<li>Tabs ergonomics<\/li>\n<li>Performance review<\/li>\n<\/ul>\n<p>Reach out to us on the forum, slack, or Github if you&#8217;re using Ionic Vue! 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:\/\/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>2020-09-09 Update: We&#8217;ve released a (new) new beta of Ionic Vue based on Vue 3 (check it out!). The following blog post is based on the old Vue 2 version. Last week, I had the privilege to speak at the second VueConf USA in sunny Tampa, Florida. On behalf of the whole Ionic team, I [&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,122],"tags":[107,147],"class_list":["post-2690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-announcements","category-product","tag-ionic-4","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>Announcing the Ionic Vue Beta - Ionic Blog<\/title>\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\/announcing-the-ionic-vue-beta\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Announcing the Ionic Vue Beta\" \/>\n<meta property=\"og:description\" content=\"2020-09-09 Update: We&#8217;ve released a (new) new beta of Ionic Vue based on Vue 3 (check it out!). The following blog post is based on the old Vue 2 version. Last week, I had the privilege to speak at the second VueConf USA in sunny Tampa, Florida. On behalf of the whole Ionic team, I [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\" \/>\n<meta property=\"og:site_name\" content=\"Ionic Blog\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-03T14:41:45+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-10-15T22:34:21+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\/announcing-the-ionic-vue-beta#article\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\"},\"author\":{\"name\":\"Mike Hartington\",\"@id\":\"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b\"},\"headline\":\"Announcing the Ionic Vue Beta\",\"datePublished\":\"2019-04-03T14:41:45+00:00\",\"dateModified\":\"2020-10-15T22:34:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\"},\"wordCount\":682,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/ionic.io\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"keywords\":[\"Ionic 4\",\"Vue\"],\"articleSection\":[\"Announcements\",\"Product\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\",\"url\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\",\"name\":\"Announcing the Ionic Vue Beta - Ionic Blog\",\"isPartOf\":{\"@id\":\"https:\/\/ionic.io\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage\"},\"image\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage\"},\"thumbnailUrl\":\"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png\",\"datePublished\":\"2019-04-03T14:41:45+00:00\",\"dateModified\":\"2020-10-15T22:34:21+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#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\/announcing-the-ionic-vue-beta#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/ionic.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Announcing the Ionic Vue Beta\"}]},{\"@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":"Announcing the Ionic Vue Beta - Ionic Blog","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\/announcing-the-ionic-vue-beta","og_locale":"en_US","og_type":"article","og_title":"Announcing the Ionic Vue Beta","og_description":"2020-09-09 Update: We&#8217;ve released a (new) new beta of Ionic Vue based on Vue 3 (check it out!). The following blog post is based on the old Vue 2 version. Last week, I had the privilege to speak at the second VueConf USA in sunny Tampa, Florida. On behalf of the whole Ionic team, I [&hellip;]","og_url":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta","og_site_name":"Ionic Blog","article_published_time":"2019-04-03T14:41:45+00:00","article_modified_time":"2020-10-15T22:34:21+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\/announcing-the-ionic-vue-beta#article","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta"},"author":{"name":"Mike Hartington","@id":"https:\/\/ionic.io\/blog\/#\/schema\/person\/c8c92b04d526adb925ea514c619a267b"},"headline":"Announcing the Ionic Vue Beta","datePublished":"2019-04-03T14:41:45+00:00","dateModified":"2020-10-15T22:34:21+00:00","mainEntityOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta"},"wordCount":682,"commentCount":0,"publisher":{"@id":"https:\/\/ionic.io\/blog\/#organization"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","keywords":["Ionic 4","Vue"],"articleSection":["Announcements","Product"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#respond"]}]},{"@type":"WebPage","@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta","url":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta","name":"Announcing the Ionic Vue Beta - Ionic Blog","isPartOf":{"@id":"https:\/\/ionic.io\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage"},"image":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#primaryimage"},"thumbnailUrl":"https:\/\/ionic.io\/blog\/wp-content\/uploads\/2018\/11\/ionic-vue-img.png","datePublished":"2019-04-03T14:41:45+00:00","dateModified":"2020-10-15T22:34:21+00:00","breadcrumb":{"@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ionic.io\/blog\/announcing-the-ionic-vue-beta#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\/announcing-the-ionic-vue-beta#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/ionic.io\/blog"},{"@type":"ListItem","position":2,"name":"Announcing the Ionic Vue Beta"}]},{"@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\/2690","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=2690"}],"version-history":[{"count":0,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/posts\/2690\/revisions"}],"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=2690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/categories?post=2690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ionic.io\/blog\/wp-json\/wp\/v2\/tags?post=2690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}