Sign In Start Free Trial
Account

Add to playlist

Create a Playlist

Modal Close icon
You need to login to use this feature.
  • Book Overview & Buying Front-End Development Projects with Vue.js
  • Table Of Contents Toc
Front-End Development Projects with Vue.js

Front-End Development Projects with Vue.js

By : Raymond Camden, Hugo Di Francesco, Clifford Gurney , Philip Kirkbride , Maya Shavin , Dániel Szabó
4.8 (10)
close
close
Front-End Development Projects with Vue.js

Front-End Development Projects with Vue.js

4.8 (10)
By: Raymond Camden, Hugo Di Francesco, Clifford Gurney , Philip Kirkbride , Maya Shavin , Dániel Szabó

Overview of this book

Are you looking to use Vue 2 for web applications, but don't know where to begin? Front-End Development Projects with Vue.js will help build your development toolkit and get ready to tackle real-world web projects. You'll get to grips with the core concepts of this JavaScript framework with practical examples and activities. Through the use-cases in this book, you'll discover how to handle data in Vue components, define communication interfaces between components, and handle static and dynamic routing to control application flow. You'll get to grips with Vue CLI and Vue DevTools, and learn how to handle transition and animation effects to create an engaging user experience. In chapters on testing and deploying to the web, you'll gain the skills to start working like an experienced Vue developer and build professional apps that can be used by other people. You'll work on realistic projects that are presented as bitesize exercises and activities, allowing you to challenge yourself in an enjoyable and attainable way. These mini projects include a chat interface, a shopping cart and price calculator, a to-do app, and a profile card generator for storing contact details. By the end of this book, you'll have the confidence to handle any web development project and tackle real-world front-end development problems.
Table of Contents (16 chapters)
close
close
Preface

Deep Watching Concepts

When using Vue.js to watch a data property, you can purposefully observe keys inside an object for changes, rather than changes to the object itself. This is done by setting the optional deep property to true:

data() {
  return {
      organization: {
        name: 'ABC',
        employees: [
            'Jack', 'Jill'
        ]
      }
  }
},
watch: {
    organization: {
      handler: function(v) {
        this.sendIntercomData()
      },
      deep: true,
      immediate: true,
    },
  },

This example will watch all available keys inside the organization data object for changes, so if the name property inside the organization changes, the organization watcher will trigger.

If you do not need to observe every key inside of an object, it can be more performant to just watch a specific key inside an object for changes by specifying it as a myObj.value string. For example, you may allow a user to edit their company name and have that data sent to an API only when that key has been modified.

In the following example, the watcher is specifically observing the name key of the organization object.

data() {
  return {
      organization: {
        name: 'ABC',
        employees: [
            'Jack', 'Jill'
        ]
      }
  }
},
watch: {
    'organization.name': {
      handler: function(v) {
        this.sendIntercomData()
      },
      immediate: true,
    },
  },

We saw how deep watching works. Now, let's try the next exercise and watch the nested properties of a data object.

Exercise 2.04: Watching Nested Properties of a Data Object

In this exercise, you will use watchers to observe keys within an object, which will update when a user triggers a method within the UI.

To access the code files for this exercise, refer to https://packt.live/353m59N.

  1. Open a command-line terminal, navigate to the Exercise 2.04 folder, and run the following commands in order:
    > cd Exercise2.04/
    > code .
    > yarn
    > yarn serve

    Go to https://localhost:8080.

  2. Start by defining a product object that contains a price and label and a discount key. Output these values into the template:
    <template>
      <div class="container">
        <h1>Deep Watcher</h1>
        <div>
            <h4>{{ product.label }}</h4>
            <h5>${{ product.price }} (${{ discount }} Off)</h5>
        </div>
      </div>
    </template>
    <script>
    export default {
      data() {
        return {
          discount: 0,
          product: {
            price: 25,
            label: 'Blue juice',
          },
        }
      },
    }
    </script>
    <style lang="scss" scoped>
    .container {
      margin: 0 auto;
      padding: 30px;
      max-width: 600px;
      font-family: 'Avenir', Helvetica, sans-serif;
      margin: 0;
    }
    a {
      display: inline-block;
      background: rgb(235, 50, 50);
      border-radius: 10px;
      font-size: 14px;
      color: white;
      padding: 10px 20px;
      text-decoration: none;
    }
    </style>
  3. Set up a button that will modify the price of the product. Do this by adding a button element with a click event bound to an updatePrice method that decrements the value of price:
    <template>
    ...
        <a href="#" @click="updatePrice">Reduce Price!</a>
    ...
    </template>
    <script>
    ...
      methods: {
        updatePrice() {
          if (this.product.price < 1) return
          this.product.price--
        },
      },
    ...
    </script>

    When you click the button, it should reduce the price as seen in the following screenshot:

    Figure 2.6: Screen displaying the reduced price of Blue juice

    Figure 2.6: Screen displaying the reduced price of Blue juice

  4. Time for the nested watcher. We will watch the product object's price, and increment the discount data prop:
      watch: {
        'product.price'() {
          this.discount++
        },
      },

    Now, as you reduce the price, the discount value will go up because of the watcher:

    Figure 2.7 Output displaying an increased discount value

Figure 2.7 Output displaying an increased discount value

In this exercise, we used watchers to observe a key inside an object and then set new data with or without using the optional arguments parsed by the watcher.

CONTINUE READING
83
Tech Concepts
36
Programming languages
73
Tech Tools
Icon Unlimited access to the largest independent learning library in tech of over 8,000 expert-authored tech books and videos.
Icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Icon 50+ new titles added per month and exclusive early access to books as they are being written.
Front-End Development Projects with Vue.js
notes
bookmark Notes and Bookmarks search Search in title playlist Add to playlist font-size Font size

Change the font size

margin-width Margin width

Change margin width

day-mode Day/Sepia/Night Modes

Change background colour

Close icon Search
Country selected

Close icon Your notes and bookmarks

Confirmation

Modal Close icon
claim successful

Buy this book with your credits?

Modal Close icon
Are you sure you want to buy this book with one of your credits?
Close
YES, BUY

Submit Your Feedback

Modal Close icon
Modal Close icon
Modal Close icon