在 main.js 中导入组件的 pros/cons 是什么(对于 VueJS)?

What are the pros/cons of importing components in main.js (for VueJS)?

我正在使用 vue-cli + webpack 作为我的开发环境,我在 main.js 中拥有大多数组件 included/declared 作为 Vue.component('<name>',require('./components/<name>.vue'));

在 development/production 中仅在需要的地方导入组件是否有优势,或者像我现在所做的那样在 main.js 文件中导入组件没有区别?

我认为全局注册的主要好处是您的组件始终可用,而无需在每个组件中注册。如果您要注册自己的自定义组件并且知道不会有任何命名冲突,这很好。真正的问题是,如果您正在编写可以跨多个项目重用的组件。

例如,我刚刚在 vue 中编写了一个星级评分应用程序,我计划将其用于多个项目并已通过 npm 发布,因此任何人都可以在他们的项目中使用该组件。主要组件本身需要另一个名为 star 的组件。如果我要全局注册 star,任何包含我的星级评分组件的项目现在都会有一个名为 'star' 的全局组件,可在整个应用程序中使用,但是,如果您已经注册了自己的名为star 我们遇到命名冲突,这意味着一个组件将覆盖另一个:

http://jsfiddle.net/krb23sq3/

当您根据需要注册组件时,您可以避免任何命名冲突,因为注册的组件被限制在它们自己的范围内。在下面的示例中,两个组件都注册了一个名为 'message' 的组件(并且都使用相同的模板),但每个组件都引用不同的 'message' 组件,因此它们输出不同的消息:

http://jsfiddle.net/24hwu7at/