Vue.js 就设计而言,在Vue中使用插槽是个坏主意吗?

Vue.js 就设计而言,在Vue中使用插槽是个坏主意吗?,vue.js,Vue.js,今天下午我一直在学习Vue中的插槽。我想我了解如何编写它们,但我想知道它们在设计方面是否是个坏主意 在我看来,从自包含的组件构建东西,以明确的方式发送组件数据并从中获取数据,这是Vue的一个中心思想,也是一个非常好的想法。从我今天看到的关于插槽的内容来看,它们似乎通过(潜在地)将大量功能从组件向上移动到根目录,极大地削弱了这种想法 这是一个合理的反对意见,还是我只是用错误的方式思考问题?你用错误的方式思考问题 您非常正确地承认: …从自包含的组件中构建东西,以明确的方式发送组件数据并从中获取数据

今天下午我一直在学习Vue中的插槽。我想我了解如何编写它们,但我想知道它们在设计方面是否是个坏主意

在我看来,从自包含的组件构建东西,以明确的方式发送组件数据并从中获取数据,这是Vue的一个中心思想,也是一个非常好的想法。从我今天看到的关于插槽的内容来看,它们似乎通过(潜在地)将大量功能从组件向上移动到根目录,极大地削弱了这种想法


这是一个合理的反对意见,还是我只是用错误的方式思考问题?

你用错误的方式思考问题

您非常正确地承认:

…从自包含的组件中构建东西,以明确的方式发送组件数据并从中获取数据是Vue的一个中心思想

如果我们将插槽重新定义为“发送组件数据”的另一种方式,那么插槽只是Vue已经做得很好的另一种方式。插槽和组件上的有界字段之间的唯一区别在于,插槽允许您“传递”整个组件,而不仅仅是数据位

插槽让Vue组件能够更好地分离关注点,因为它允许组件“在”另一个组件中渲染,而不会严重干扰该组件的实现,这确实有助于实现您提到的清晰性,而不是损害它


如前所述,模态组件就是一个很好的例子。模态根本不应该关心它作为它的主体呈现的是什么,它应该只促进作为模态的过程和结构。插槽是Vue中使这种划分成为可能的东西之一。

不确定将功能从组件移动到根目录是什么意思,但插槽的设计方式使它们的行为和感觉与典型的HTML一样,如果需要,还会增加一些反应性;记住,您不必以什么方式使用添加的反应性?它们是合成的。模态不应该关心它正在呈现什么,它应该只关心它将应该显示的内容放在哪里。这很方便。必须编写登录名、创建帐户并明确忘记密码,这是重复代码。理想情况下,你只需说“在这里,把这个内容放在你的主要部分”。