Bird
Raised Fist0
Vueframework~30 mins

Plugin creation basics in Vue - Mini Project: Build & Apply

Choose your learning style10 modes available
Plugin creation basics
📖 Scenario: You are building a Vue 3 application and want to create a simple plugin that adds a global method to all components. This method will greet users by name.
🎯 Goal: Create a Vue 3 plugin that adds a global method called $greet to all components. This method should accept a name string and return a greeting message.
📋 What You'll Learn
Create a plugin object with an install method
Inside install, add a global property $greet to app.config.globalProperties
The $greet method should take a name parameter and return `Hello, ${name}!`
Use the plugin in a Vue app instance
💡 Why This Matters
🌍 Real World
Plugins help add reusable features to Vue apps, like global methods or directives, making code cleaner and easier to maintain.
💼 Career
Understanding plugin creation is important for Vue developers to extend app functionality and share code across projects or teams.
Progress0 / 4 steps
1
Create the plugin object
Create a constant called greetPlugin and assign it an object with an install method that takes a parameter app.
Vue
Hint

Start by defining an object named greetPlugin with an install method that receives app.

2
Add the global method inside install
Inside the install method of greetPlugin, add a global property called $greet to app.config.globalProperties. This should be a function that takes a parameter name.
Vue
Hint

Use app.config.globalProperties.$greet = function(name) {} to add the method.

3
Implement the greeting message
Complete the $greet function to return the string `Hello, ${name}!` using a template literal.
Vue
Hint

Use return `Hello, ${name}!`; inside the function.

4
Use the plugin in a Vue app
Create a Vue app instance by calling createApp({}) and assign it to app. Then use app.use(greetPlugin) to install the plugin.
Vue
Hint

Use const app = createApp({}) and then app.use(greetPlugin).

Practice

(1/5)
1. What is the main purpose of a Vue plugin?
easy
A. To style components with CSS
B. To create local components only
C. To replace the Vue router
D. To add reusable features globally to a Vue app

Solution

  1. Step 1: Understand what plugins do in Vue

    Plugins provide reusable features that can be used across the entire Vue app.
  2. Step 2: Compare options

    Only To add reusable features globally to a Vue app describes adding reusable features globally, which is the main purpose of plugins.
  3. Final Answer:

    To add reusable features globally to a Vue app -> Option D
  4. Quick Check:

    Plugin purpose = reusable global features [OK]
Hint: Plugins add global features, not local or styling only [OK]
Common Mistakes:
  • Thinking plugins only create local components
  • Confusing plugins with routing or styling tools
  • Believing plugins replace core Vue features
2. Which syntax correctly defines a Vue plugin with an install method?
easy
A. const MyPlugin = function(app) { /* code */ }
B. const MyPlugin = { install(app) { /* code */ } }
C. const MyPlugin = () => { app.install() }
D. const MyPlugin = { use(app) { /* code */ } }

Solution

  1. Step 1: Recall Vue plugin structure

    A Vue plugin is an object with an install method that receives the app instance.
  2. Step 2: Check each option

    const MyPlugin = { install(app) { /* code */ } } correctly defines an object with install(app). Others use wrong method names or syntax.
  3. Final Answer:

    const MyPlugin = { install(app) { /* code */ } } -> Option B
  4. Quick Check:

    Plugin = object with install(app) method [OK]
Hint: Plugin must have install(app) method inside an object [OK]
Common Mistakes:
  • Using 'use' instead of 'install' method
  • Defining plugin as a function without install
  • Arrow function without proper parameters
3. Given this plugin code, what will be the output when used in a Vue app?
const LoggerPlugin = {
  install(app) {
    app.config.globalProperties.$log = (msg) => console.log('Log:', msg)
  }
}

const app = Vue.createApp({
  mounted() {
    this.$log('Hello')
  }
})
app.use(LoggerPlugin)
app.mount('#app')
medium
A. Nothing happens because plugin is not installed
B. Throws an error because $log is undefined
C. Logs 'Log: Hello' to the console when component mounts
D. Logs 'Hello' without the 'Log:' prefix

Solution

  1. Step 1: Understand plugin effect

    The plugin adds a global property $log that logs messages with 'Log:' prefix.
  2. Step 2: Check component usage

    On mount, the component calls this.$log('Hello'), which triggers console.log('Log: Hello').
  3. Final Answer:

    Logs 'Log: Hello' to the console when component mounts -> Option C
  4. Quick Check:

    Plugin adds $log, called on mount, logs with prefix [OK]
Hint: Global properties added by plugin are accessible via this.$property [OK]
Common Mistakes:
  • Forgetting to call app.use() before mount
  • Expecting $log to be a method without prefix
  • Confusing plugin installation timing
4. Identify the error in this Vue plugin code:
const MyPlugin = {
  install() {
    console.log('Plugin installed')
  }
}

const app = Vue.createApp({})
app.use(MyPlugin)
app.mount('#app')
medium
A. install method missing the app parameter
B. Plugin object should be a function, not an object
C. app.use() must be called after app.mount()
D. Console.log cannot be used inside install

Solution

  1. Step 1: Check install method signature

    The install method must accept the app parameter to receive the Vue app instance.
  2. Step 2: Analyze the code

    Here, install() has no parameters, so it cannot access the app instance, which is required.
  3. Final Answer:

    install method missing the app parameter -> Option A
  4. Quick Check:

    install(app) needs app parameter [OK]
Hint: install must always receive app parameter [OK]
Common Mistakes:
  • Omitting app parameter in install method
  • Calling app.use() after mount
  • Thinking plugin must be a function
5. You want to create a plugin that globally registers a component and adds a global method. Which is the correct way to do this?
const MyPlugin = {
  install(app) {
    // Register component
    app.component('MyButton', {
      template: 'Click me'
    })
    // Add global method
    app.config.globalProperties.$alert = (msg) => alert(msg)
  }
}

const app = Vue.createApp({})
app.use(MyPlugin)
app.mount('#app')

What will happen when you use <MyButton /> in your app and call this.$alert('Hi') inside a component?
hard
A. The button renders correctly and $alert shows an alert with 'Hi'
B. The button does not render because components can't be registered in plugins
C. $alert is undefined and causes an error
D. The plugin causes a runtime error due to incorrect syntax

Solution

  1. Step 1: Verify component registration in plugin

    Using app.component inside install correctly registers a global component.
  2. Step 2: Verify adding global method

    Adding $alert to app.config.globalProperties makes it accessible in components via this.$alert.
  3. Step 3: Predict behavior

    Using <MyButton /> renders the button, and calling this.$alert('Hi') shows an alert with 'Hi'.
  4. Final Answer:

    The button renders correctly and $alert shows an alert with 'Hi' -> Option A
  5. Quick Check:

    Global component + global method work as expected [OK]
Hint: Register components and add methods inside install(app) [OK]
Common Mistakes:
  • Thinking components can't be registered in plugins
  • Forgetting to add app.use() before mount
  • Not using app.config.globalProperties for global methods
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard