全局注册所有的组件意味着即便你已经不再使用一个组件了,它仍然会被包含在你最终的构建结果中。这造成了用户下载的 JavaScript 的无谓的增加。建议使用局部注册。

  1. <div id="app">
  2. <button-counter></button-counter>
  3. <test></test>
  4. </div>
  5. <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  6. <script type="text/javascript">
  7. Vue.component('button-counter', {//全局注册,在new Vue实例之前用Vue.component('MyComponentName', { /* ... */ })创建
  8. props: ['title'],
  9. data: function () {
  10. return {}
  11. },
  12. template: '<div><h1>hi...</h1></div>',
  13. methods:{
  14. }
  15. })
  16. var vm = new Vue({
  17. el : "#app",
  18. data : {
  19. },
  20. methods:{
  21. clicknow : function (e) {
  22. console.log(e);
  23. }
  24. },
  25. components:{
  26. test : {//局部注册
  27. template:"<h2>h2...</h2>"
  28. }
  29. }
  30. });

模块系统中局部注册

开发过程中,我们推荐创建一个 components 目录,并将每个组件放置在其各自的文件中。
然后你需要在局部注册之前导入每个你想使用的组件。例如,在一个假设的 ComponentB.jsComponentB.vue 文件中:

  1. import ComponentA from './ComponentA'
  2. import ComponentC from './ComponentC'
  3. export default {
  4. components: {
  5. ComponentA,
  6. ComponentC
  7. },
  8. // ...
  9. }

现在 ComponentAComponentC 都可以在 ComponentB 的模板中使用了。

基础组件的自动化全局注册

详看这里:链接