{"id":606,"date":"2022-03-29T10:21:07","date_gmt":"2022-03-29T10:21:07","guid":{"rendered":"http:\/\/shabeebk.com\/blog\/?p=606"},"modified":"2022-03-30T06:29:57","modified_gmt":"2022-03-30T06:29:57","slug":"simple-vue-2-example-todo-list","status":"publish","type":"post","link":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/","title":{"rendered":"Simple Vue 2 Tutorial with Example app"},"content":{"rendered":"\n<p><br>Let&#8217;s make a simple vue project example with a TODO list <\/p>\n\n\n\n<h2><strong>Setup and Installation<\/strong><\/h2>\n\n\n\n<p>There are two ways to set up Vue: through a VueCLI, or by including a script inside of your HTML file.&nbsp;Let&#8217;s do with VueCLI, We can install vue vueCLI globally <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>npm install -g @vue\/cli or yarn global add @vue\/cli<\/code><\/code><\/pre>\n\n\n\n<p>Once install complete, let&#8217;s create a project by using the below comment<\/p>\n\n\n\n<p><code>vue create vue-simple-todo<\/code><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM.png\"><img loading=\"lazy\" width=\"820\" height=\"192\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM.png\" alt=\"\" class=\"lazy wp-image-608\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM.png 820w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-300x70.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-768x180.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-788x185.png 788w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><noscript><img loading=\"lazy\" width=\"820\" height=\"192\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM.png\" alt=\"\" class=\"wp-image-608\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM.png 820w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-300x70.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-768x180.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.24-PM-788x185.png 788w\" sizes=\"(max-width: 820px) 100vw, 820px\" \/><\/noscript><\/a><figcaption>Lets select Vue 2 for this example<\/figcaption><\/figure>\n\n\n\n<p>Lets select Vue 2 for this example and click enter<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"158\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM.png\" alt=\"\" class=\"lazy wp-image-609\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-300x46.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-768x119.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-788x122.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"158\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM.png\" alt=\"\" class=\"wp-image-609\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-300x46.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-768x119.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.02.39-PM-788x122.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<p>Then it will ask for package manager ( Here i am going with npm in this case)<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"1011\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM.png\" alt=\"\" class=\"lazy wp-image-610\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-300x296.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-768x758.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-788x778.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"1011\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM.png\" alt=\"\" class=\"wp-image-610\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-300x296.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-768x758.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.03.45-PM-788x778.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-1812723430816589\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-1812723430816589\" data-ad-slot=\"5066563614\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n\n\n\n<p>Here is my final screenshot  after completing project stup<\/p>\n\n\n\n<p>Now as mentioned there we can cd into folder and start server <\/p>\n\n\n\n<p><code>npm run serve<\/code><\/p>\n\n\n\n<p>Now server will run on <code>http:\/\/localhost:8080\/<\/code>. We can open a browser and see basic vue template  in browser<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"574\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM.png\" alt=\"\" class=\"lazy wp-image-623\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-300x168.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-768x431.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-788x442.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"574\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM.png\" alt=\"\" class=\"wp-image-623\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-300x168.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-768x431.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-2.05.34-PM-788x442.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><figcaption>deafault vue page<\/figcaption><\/figure>\n\n\n\n<p>Now let&#8217;s take a look on codebase (I am using VS Code for editing files)<\/p>\n\n\n\n<p>We can see App.vue and components folder below<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"568\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM.png\" alt=\"\" class=\"lazy wp-image-611\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-300x166.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-768x426.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-788x437.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"568\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM.png\" alt=\"\" class=\"wp-image-611\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-300x166.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-768x426.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.15.05-PM-788x437.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<p>Let&#8217;s start our coding \ud83d\ude42<\/p>\n\n\n\n<p>Let&#8217;s start with some cleanup, remove <code>HelloWorld.vue<\/code> from components, and create a new file <code>TodoList.vue<\/code><\/p>\n\n\n\n<p>Then we can import <code>TodoList.vue<\/code> inside App.vue<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div id=\"app\"&gt;\n    &lt;TodoList \/&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nimport TodoList from \".\/components\/TodoList.vue\";\n\nexport default {\n  name: \"App\",\n  components: {\n    TodoList,\n  },\n};\n&lt;\/script&gt;<\/code><\/pre>\n\n\n\n<p>In <code>TodoList.vue<\/code>, We can start with the todo Skelton template, a very basic HTML <code>todo Layout<\/code>, and a simple<code> vue class<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n  &lt;div class=\"hello\"&gt;\n    &lt;section class=\"vh-100\" style=\"background-color: #eee\"&gt;\n      &lt;div class=\"container py-5 h-100\"&gt;\n        &lt;div class=\"row d-flex justify-content-center align-items-center h-100\"&gt;\n          &lt;div class=\"col col-lg-9 col-xl-7\"&gt;\n            &lt;div class=\"card rounded-3\"&gt;\n              &lt;div class=\"card-body p-4\"&gt;\n                &lt;h4 class=\"text-center my-3 pb-3\"&gt;Simple Vue To Do App&lt;\/h4&gt;\n\n                &lt;form\n                  class=\"row row-cols-lg-auto g-3 justify-content-center align-items-center mb-4 pb-2\"\n                &gt;\n                  &lt;div class=\"col-12\"&gt;\n                    &lt;div class=\"form-outline\"&gt;\n                      &lt;input type=\"text\" id=\"form1\" class=\"form-control\"\nplaceholder=\"Enter a task here\" \/&gt;\n                      \n                    &lt;\/div&gt;\n                  &lt;\/div&gt;\n\n                  &lt;div class=\"col-12\"&gt;\n                    &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Save&lt;\/button&gt;\n                  &lt;\/div&gt;\n\n                  &lt;div class=\"col-12\"&gt;\n                    &lt;button type=\"submit\" class=\"btn btn-warning\"&gt;\n                      Get tasks\n                    &lt;\/button&gt;\n                  &lt;\/div&gt;\n                &lt;\/form&gt;\n\n                &lt;table class=\"table mb-4\"&gt;\n                  &lt;thead&gt;\n                    &lt;tr&gt;\n                      &lt;th scope=\"col\"&gt;No.&lt;\/th&gt;\n                      &lt;th scope=\"col\"&gt;Todo item&lt;\/th&gt;\n                      &lt;th scope=\"col\"&gt;Status&lt;\/th&gt;\n                      &lt;th scope=\"col\"&gt;Actions&lt;\/th&gt;\n                    &lt;\/tr&gt;\n                  &lt;\/thead&gt;\n                  &lt;tbody&gt;\n                    &lt;tr&gt;\n                      &lt;th scope=\"row\"&gt;1&lt;\/th&gt;\n                      &lt;td&gt;Buy groceries for next week&lt;\/td&gt;\n                      &lt;td&gt;In progress&lt;\/td&gt;\n                      &lt;td&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-danger\"&gt;\n                          Delete\n                        &lt;\/button&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-success ms-1\"&gt;\n                          Finished\n                        &lt;\/button&gt;\n                      &lt;\/td&gt;\n                    &lt;\/tr&gt;\n                    &lt;tr&gt;\n                      &lt;th scope=\"row\"&gt;2&lt;\/th&gt;\n                      &lt;td&gt;Renew car insurance&lt;\/td&gt;\n                      &lt;td&gt;In progress&lt;\/td&gt;\n                      &lt;td&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-danger\"&gt;\n                          Delete\n                        &lt;\/button&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-success ms-1\"&gt;\n                          Complete\n                        &lt;\/button&gt;\n                      &lt;\/td&gt;\n                    &lt;\/tr&gt;\n                  &lt;\/tbody&gt;\n                &lt;\/table&gt;\n              &lt;\/div&gt;\n            &lt;\/div&gt;\n          &lt;\/div&gt;\n        &lt;\/div&gt;\n      &lt;\/div&gt;\n    &lt;\/section&gt;\n  &lt;\/div&gt;\n&lt;\/template&gt;\n\n&lt;script&gt;\nexport default {\n  name: \"TodoList\",\n};\n&lt;\/script&gt;\n\n&lt;!-- Add \"scoped\" attribute to limit CSS to this component only --&gt;\n&lt;style scoped&gt;\nh3 {\n  margin: 40px 0 0;\n}\nul {\n  list-style-type: none;\n  padding: 0;\n}\nli {\n  display: inline-block;\n  margin: 0 10px;\n}\na {\n  color: #37dd92;\n}\n.stricked {\n  text-decoration: line-through;\n}\n&lt;\/style&gt;\n<\/code><\/pre>\n\n\n\n<p>To get bootstrap let&#8217;s add bootstrap CDN to index.html (Or we install and add in App.vue also)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;link\n      href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.1.3\/dist\/css\/bootstrap.min.css\"\n      rel=\"stylesheet\"\n      integrity=\"sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3\"\n      crossorigin=\"anonymous\"\n    \/&gt;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM.png\"><img loading=\"lazy\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM.png\" alt=\"\" class=\"lazy wp-image-625\" width=\"754\" height=\"576\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-300x229.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-768x587.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-788x603.png 788w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><noscript><img loading=\"lazy\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM.png\" alt=\"\" class=\"wp-image-625\" width=\"754\" height=\"576\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-300x229.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-768x587.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-4.17.45-PM-788x603.png 788w\" sizes=\"(max-width: 754px) 100vw, 754px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<p>Now We can define data inside vue class, and <em>move HTML labels <\/em>from template to <code>todos<\/code> variable inside data. Here we define our <code>todo<\/code> list variable and assign some values.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>data() {\n    return {\n      todos: &#91;\n        {\n          id: 1,\n          title: \"Buy groceries for next week\",\n          completed: false,\n        },\n        {\n          id: 2,\n          title: \"Renew car insurance\",\n          completed: false,\n        },\n      ],\n    };\n  },<\/code><\/pre>\n\n\n\n<p>Let&#8217;s add some logic to template also,<br>Since we moved todos from HTML table to vue, we can use v-for  to show data in HTML as shown below.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;table class=\"table mb-4\"&gt;\n                  &lt;thead&gt;\n                    ......\n                  &lt;\/thead&gt;\n                  &lt;tbody&gt;\n                    &lt;tr v-for=\"(todo, idx) in todos\" :key=\"todo.id\"&gt;\n                      &lt;th scope=\"row\"&gt;{{ idx + 1 }}&lt;\/th&gt;\n                      &lt;td&gt;{{ todo.title }}&lt;\/td&gt;\n                      &lt;td&gt;\n                        {{ todo.completed ? \"Completed\" : \"In progress\" }}\n                      &lt;\/td&gt;\n                      &lt;td&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-danger\"&gt;\n                          Delete\n                        &lt;\/button&gt;\n                        &lt;button type=\"submit\" class=\"btn btn-success ms-1\"&gt;\n                          Complete\n                        &lt;\/button&gt;\n                      &lt;\/td&gt;\n                    &lt;\/tr&gt;\n                  &lt;\/tbody&gt;\n                &lt;\/table&gt;<\/code><\/pre>\n\n\n\n<p>Now the out will show as below<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"529\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM.png\" alt=\"\" class=\"lazy wp-image-616\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-300x155.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-768x397.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-788x407.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"529\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM.png\" alt=\"\" class=\"wp-image-616\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-300x155.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-768x397.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.40.40-PM-788x407.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<p>Now let us add some logic to save functionality<\/p>\n\n\n\n<p>Add <code>v-modal<\/code> for <code>input button<\/code> and define v-modal inside <code>data()<\/code><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;input\n                        type=\"text\"\n                        id=\"form1\"\n                        <strong>v-model=\"newTodo\"<\/strong>\n                        class=\"form-control\"\n                        placeholder=\"Enter a task here\"\n                      \/&gt;\n\n......\ndata() {\n    return {\n      <strong>newTodo: \"\",<\/strong>\n      todos: &#91;\n        {\n          id: 1,\n          title: \"Buy groceries for next week\",\n          completed: false,\n        },\n        {\n          id: 2,\n          title: \"Pay credit card bill \",\n          completed: false,\n        },\n      ],\n    };\n  },<\/code><\/pre>\n\n\n\n<p>Let&#8217;s add the click functionality for the save button, We can add <code>methods<\/code> below <code>data()<\/code> add functionality as below.<br>Finally, we will clear newTodo once we added to the current list. On the template, we call this method on the save button as below <\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n....\n&lt;button\n                      type=\"button\"\n                      class=\"btn btn-primary\"\n                      @click=\"addToDo\"\n                    &gt;\n                      Save\n                    &lt;\/button&gt;\n&lt;\/tempate&gt;\n&lt;script&gt;\ndata() {\n.....\n},\nmethods: {\n    addToDo(e) {\n      e.preventDefault();\n      this.todos.push({\n        id: this.todos.length + 1,\n        title: this.newTodo,\n        completed: false,\n      });\n      this.newTodo = \"\";\n    },\n    \n  },\n.....<\/code><\/pre>\n\n\n\n<p>Now run server and see in action,  we can type todo and on click, it will come on below list.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\"><img loading=\"lazy\" width=\"1024\" height=\"598\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/plugins\/jquery-image-lazy-loading\/images\/grey.gif\" data-original=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\" alt=\"\" class=\"lazy wp-image-617\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-300x175.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-768x449.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-788x460.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><noscript><img loading=\"lazy\" width=\"1024\" height=\"598\" src=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\" alt=\"\" class=\"wp-image-617\" srcset=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png 1024w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-300x175.png 300w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-768x449.png 768w, http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM-788x460.png 788w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/noscript><\/a><\/figure>\n\n\n\n<p>let&#8217;s add remove functionality and toggle functionality. To add both <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;template&gt;\n.....\n&lt;tbody&gt;\n                    &lt;tr\n                      v-for=\"(todo, idx) in todos\"\n                      :key=\"todo.id\"\n                      :class=\"todo.completed &amp;&amp; 'stricked'\"\n                    &gt;\n                      &lt;th scope=\"row\"&gt;{{ idx + 1 }}&lt;\/th&gt;\n                      &lt;td&gt;{{ todo.title }}&lt;\/td&gt;\n                      &lt;td&gt;\n                        {{ todo.completed ? \"Completed\" : \"In progress\" }}\n                      &lt;\/td&gt;\n                      &lt;td&gt;\n                        &lt;button\n                          type=\"submit\"\n                          class=\"btn btn-danger\"\n                          <strong>@click=\"removeItem(todo)\"<\/strong>\n                        &gt;\n                          Delete\n                        &lt;\/button&gt;\n                        &lt;button\n                          type=\"submit\"\n                          class=\"btn btn-success ms-1\"\n                      <strong>    @click=\"toggleCompleted(todo)\"<\/strong>\n                        &gt;\n                          <strong>{{ todo.completed ? \"Re-open\" : \"Complete\" }}<\/strong>\n                        &lt;\/button&gt;\n                      &lt;\/td&gt;\n                    &lt;\/tr&gt;\n                  &lt;\/tbody&gt;\n.....\n&lt;\/template&gt;\n&lt;script&gt;\n......\n\n methods: {\n    addToDo(e) {\n      e.preventDefault();\n      this.todos.push({\n        id: this.todos.length + 1,\n        title: this.newTodo,\n        completed: false,\n      });\n      this.newTodo = \"\";\n    },\n    <strong>toggleCompleted: function (item) {\n      item.completed = !item.completed;\n    },\n    removeItem: function (item) {\n      this.todos = this.todos.filter((newItem) =&gt; newItem.id !== item.id);\n    },<\/strong>\n  },\n......<\/code><\/pre>\n\n\n\n<p>This is a simple TODO app using vue2.<br>Please check out GitHub for the full codebase.<a href=\"https:\/\/github.com\/shabeeb\/vue2-todo\" target=\"_blank\" rel=\"noreferrer noopener\"> https:\/\/github.com\/shabeeb\/vue2-todo<\/a><\/p>\n\n\n\n<p>Demo:<a href=\"https:\/\/vue2-todo.pages.dev\/\" target=\"_blank\" rel=\"noreferrer noopener\"> https:\/\/vue2-todo.pages.dev\/<\/a><br>Thank you for reading.<br>please comment<\/p>\n\n\n\n<script async=\"\" src=\"https:\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js?client=ca-pub-1812723430816589\" crossorigin=\"anonymous\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-1812723430816589\" data-ad-slot=\"5066563614\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script>\n<div class=\"pvc_clear\"><\/div><p class=\"pvc_stats all \" data-element-id=\"606\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;3,178&nbsp;total views, &nbsp;1&nbsp;views today<\/p><div class=\"pvc_clear\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Let&#8217;s make a simple vue project example with a TODO list Setup and Installation There are two ways to set up Vue: through a VueCLI, or by including a script inside of your HTML file.&nbsp;Let&#8217;s do with VueCLI, We can install vue vueCLI globally Once install complete, let&#8217;s create a project by using the below [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p class=\"pvc_stats all \" data-element-id=\"606\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> &nbsp;3,178&nbsp;total views, &nbsp;1&nbsp;views today<\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":617,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spay_email":""},"categories":[1,62,63],"tags":[68,69,67,65,70,64,66],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v18.4.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Simple Vue 2 Tutorial with Example app - shabeeb Blog<\/title>\n<meta name=\"description\" content=\"vue simple app\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simple Vue 2 Tutorial with Example app - shabeeb Blog\" \/>\n<meta property=\"og:description\" content=\"A crazy developer blog\" \/>\n<meta property=\"og:url\" content=\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/\" \/>\n<meta property=\"og:site_name\" content=\"shabeeb Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-29T10:21:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-30T06:29:57+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"598\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"shabeeb\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/shabeebk.com\/blog\/#website\",\"url\":\"http:\/\/shabeebk.com\/blog\/\",\"name\":\"shabeeb Blog\",\"description\":\"A developer blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/shabeebk.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#primaryimage\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\",\"contentUrl\":\"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png\",\"width\":1024,\"height\":598,\"caption\":\"Simple todo using vuejs\"},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#webpage\",\"url\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/\",\"name\":\"Simple Vue 2 Tutorial with Example app - shabeeb Blog\",\"isPartOf\":{\"@id\":\"http:\/\/shabeebk.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#primaryimage\"},\"datePublished\":\"2022-03-29T10:21:07+00:00\",\"dateModified\":\"2022-03-30T06:29:57+00:00\",\"author\":{\"@id\":\"http:\/\/shabeebk.com\/blog\/#\/schema\/person\/71832abe654179971635c65c09bceb29\"},\"description\":\"vue simple app\",\"breadcrumb\":{\"@id\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/shabeebk.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simple Vue 2 Tutorial with Example app\"}]},{\"@type\":\"Person\",\"@id\":\"http:\/\/shabeebk.com\/blog\/#\/schema\/person\/71832abe654179971635c65c09bceb29\",\"name\":\"shabeeb\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/shabeebk.com\/blog\/#personlogo\",\"inLanguage\":\"en-US\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/9998389cc76a77663881c48f7d4cbba0?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/9998389cc76a77663881c48f7d4cbba0?s=96&d=mm&r=g\",\"caption\":\"shabeeb\"},\"description\":\"Developer,Entrepreneur, software engineer more than that a human being\",\"sameAs\":[\"http:\/\/shabeebk.com\/blog\"],\"url\":\"http:\/\/shabeebk.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Simple Vue 2 Tutorial with Example app - shabeeb Blog","description":"vue simple app","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":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/","og_locale":"en_US","og_type":"article","og_title":"Simple Vue 2 Tutorial with Example app - shabeeb Blog","og_description":"A crazy developer blog","og_url":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/","og_site_name":"shabeeb Blog","article_published_time":"2022-03-29T10:21:07+00:00","article_modified_time":"2022-03-30T06:29:57+00:00","og_image":[{"width":1024,"height":598,"url":"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png","type":"image\/png"}],"twitter_misc":{"Written by":"shabeeb","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebSite","@id":"http:\/\/shabeebk.com\/blog\/#website","url":"http:\/\/shabeebk.com\/blog\/","name":"shabeeb Blog","description":"A developer blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/shabeebk.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"ImageObject","@id":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#primaryimage","inLanguage":"en-US","url":"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png","contentUrl":"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png","width":1024,"height":598,"caption":"Simple todo using vuejs"},{"@type":"WebPage","@id":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#webpage","url":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/","name":"Simple Vue 2 Tutorial with Example app - shabeeb Blog","isPartOf":{"@id":"http:\/\/shabeebk.com\/blog\/#website"},"primaryImageOfPage":{"@id":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#primaryimage"},"datePublished":"2022-03-29T10:21:07+00:00","dateModified":"2022-03-30T06:29:57+00:00","author":{"@id":"http:\/\/shabeebk.com\/blog\/#\/schema\/person\/71832abe654179971635c65c09bceb29"},"description":"vue simple app","breadcrumb":{"@id":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/"]}]},{"@type":"BreadcrumbList","@id":"http:\/\/shabeebk.com\/blog\/simple-vue-2-example-todo-list\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/shabeebk.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Simple Vue 2 Tutorial with Example app"}]},{"@type":"Person","@id":"http:\/\/shabeebk.com\/blog\/#\/schema\/person\/71832abe654179971635c65c09bceb29","name":"shabeeb","image":{"@type":"ImageObject","@id":"http:\/\/shabeebk.com\/blog\/#personlogo","inLanguage":"en-US","url":"http:\/\/0.gravatar.com\/avatar\/9998389cc76a77663881c48f7d4cbba0?s=96&d=mm&r=g","contentUrl":"http:\/\/0.gravatar.com\/avatar\/9998389cc76a77663881c48f7d4cbba0?s=96&d=mm&r=g","caption":"shabeeb"},"description":"Developer,Entrepreneur, software engineer more than that a human being","sameAs":["http:\/\/shabeebk.com\/blog"],"url":"http:\/\/shabeebk.com\/blog\/author\/admin\/"}]}},"jetpack_featured_media_url":"http:\/\/shabeebk.com\/blog\/wp-content\/uploads\/2022\/03\/Screen-Shot-2022-03-29-at-3.45.15-PM.png","_links":{"self":[{"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/posts\/606"}],"collection":[{"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/comments?post=606"}],"version-history":[{"count":11,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/posts\/606\/revisions"}],"predecessor-version":[{"id":652,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/posts\/606\/revisions\/652"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/media\/617"}],"wp:attachment":[{"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/media?parent=606"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/categories?post=606"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/shabeebk.com\/blog\/wp-json\/wp\/v2\/tags?post=606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}