当前位置:  首页>> 技术小册>> Vue面试指南

在Vue中,组件和插件是两个不同的概念。

组件是Vue中的基本构建块,用于将应用程序拆分成可重用和独立的部分。组件可以包含模板、数据和行为,并可以通过props接受父组件的数据。组件通常作为标签使用,可以在应用程序中多次重复使用。

插件是一个可以向Vue添加全局功能或者给Vue实例添加功能的对象。插件通常包含一个install方法,用于将插件安装到Vue中。插件可以添加全局指令、全局过滤器、混入、实例方法等。插件的作用域通常是全局的,可以在整个应用程序中使用。

下面是一个组件和插件的示例代码:

  1. <template>
  2. <div>
  3. <hello-world name="Vue"></hello-world>
  4. <p>{{ message | capitalize }}</p>
  5. </div>
  6. </template>
  7. <script>
  8. import HelloWorld from './components/HelloWorld.vue'
  9. import { capitalize } from './filters'
  10. export default {
  11. components: {
  12. HelloWorld
  13. },
  14. data() {
  15. return {
  16. message: 'hello world'
  17. }
  18. },
  19. filters: {
  20. capitalize
  21. }
  22. }
  23. </script>

在这个示例中,HelloWorld组件是一个可重用的组件,可以在应用程序中多次使用。capitalize过滤器是一个局部过滤器,可以在当前组件中使用。

如果我们想在整个应用程序中使用capitalize过滤器,可以将它定义为一个全局过滤器:

  1. // filters.js
  2. export function capitalize(value) {
  3. if (!value) return ''
  4. value = value.toString()
  5. return value.charAt(0).toUpperCase() + value.slice(1)
  6. }
  7. // main.js
  8. import Vue from 'vue'
  9. import App from './App.vue'
  10. import { capitalize } from './filters'
  11. Vue.filter('capitalize', capitalize)
  12. new Vue({
  13. render: h => h(App),
  14. }).$mount('#app')

如果我们想在整个应用程序中使用一个自定义指令,可以将它定义为一个插件:

  1. // directives.js
  2. export const myDirective = {
  3. bind(el, binding, vnode) {
  4. el.style.color = binding.value
  5. }
  6. }
  7. // main.js
  8. import Vue from 'vue'
  9. import App from './App.vue'
  10. import { myDirective } from './directives'
  11. Vue.directive('my-directive', myDirective)
  12. new Vue({
  13. render: h => h(App),
  14. }).$mount('#app')

现在我们可以在应用程序中使用<div v-my-directive="'red'"></div>指令了。


该分类下的相关小册推荐: