Vue - 将所有道具保留在一个大型 mixin 中是否更好

Juj*_*bes 2 vue.js

我有一个组件库,我想在其中标准化道具、组件等。

关于将 props/methods/other mixin/etx 组合成一个更大的 mixin 的想法

  1. 所有属性名称都相同
  2. 删除重构时的重复代码,将组件从本地 props/methods/compulated/ 调整为“全局”
  3. 并非所有组件都需要 mixin 中包含的每条数据 - 第 4 点
  4. Tree Shaking 会删除 Rollup 上未使用的代码吗?
  5. 这是一个好主意吗?

小智 5

如果您的组件库不限于使用 Vue 2,您可能需要查看Vue Composition API以在不同组件之间共享功能(方法 + 反应状态)。

Mixins 可能不是您真正想要使用的,因为您会丢失有关哪些功能/道具/方法真正将放入组件中的信息,而无需重新检查代码mixin。当 Vue 在运行时合并组件选项时,您也可能会遇到问题。查看这些帖子以获取更多信息: https://css-tricks.com/how-the-vue-composition-api-replaces-vue-mixins/ https://reactjs.org/blog/2016/07/13/ mixins-considered-harmful.html

至于分享props:我昨天在 Vuetify 的创建者 John Leider 的演讲中看到的(但尚未尝试过!)是创建一个函数,该函数返回您想要在组件之间重用的 props。然后你只需在 props 定义中调用所述函数并使用扩展运算符。