我使用vue-cli + webpack作为我的开发环境,并且在main.js中以Vue.component('<name>',require('./components/<name>.vue'));的形式包含/声明了大部分组件
在开发/生产中,只在需要的地方导入组件是否有优势,或者像我现在这样在main.js文件中导入组件没有什么区别?
发布于 2017-01-21 00:34:21
我认为全局注册的主要好处是您的组件始终可用,而不必在每个组件中注册它。如果您正在注册自己的自定义组件,并且您知道不会有任何命名冲突,那么这是很好的。真正的问题是,如果您正在编写可以在多个项目中重用的组件。
例如,我刚刚用vue编写了一个星级评估应用程序,我计划在多个项目中使用它,并已通过npm发布,因此任何人都可以在他们的项目中使用该组件。主组件本身需要另一个名为star的组件。如果我在全球注册star,任何包含我的星级组件up的项目现在都会有一个名为' star‘的全局组件在整个应用程序中可用,然而,如果你已经注册了自己的名为star的组件,我们会得到一个命名冲突,这意味着一个组件将覆盖另一个组件:
http://jsfiddle.net/krb23sq3/
当您根据需要注册组件时,可以避免任何命名冲突,因为已注册的组件被限制在它们自己的作用域内。在下面的示例中,两个组件都注册了一个名为'message‘的组件(两个组件都使用相同的模板),但每个组件都引用不同的'message’组件,因此它们输出不同的消息:
http://jsfiddle.net/24hwu7at/
https://stackoverflow.com/questions/41766911
复制相似问题