V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
freeminder
V2EX  ›  Vue.js

Vue 封装问题

  •  
  •   freeminder · 2017-03-09 10:05:49 +08:00 · 2101 次点击
    这是一个创建于 2629 天前的主题,其中的信息可能已经有所发展或是发生改变。

    版本 1.x ,不是 2

    情况就是有一个组件是card,内部有一个区域可以放置各种操作组件(基本就是按钮组,有一些特殊 UI 情况)。然后项目中这个 card 可能的操作类型是比较确定的。
    一个典型场景是在某个页面下, card 的操作类型是不固定的。
    这个 card 的设计我自己有三种想法

    • A 内部实现所有的操作类型,暴露一个 actionType 开关
    • B 内部保留 slot ,使用者负责填充 action 组件
    • C 设置一个 cardBase 保留 slot ,对每种操作类型封装一个对应的 actionCard

    个人感觉是非常倾向于 C ,然而由于不同的 actionCard 除了 baseCard 的参数相同之外,控制 action 的参数都不同,结果就会导致 fragment instance 问题。
    然后我就犹豫了,目前的问题是

    • 怎样在类型切换时,优雅的不绑定不属于这个类型的参数,避免 attribute ignore warning
    • 就算不绑定额外参数给 card ,这个可以理解成基于继承的封装还是产生了 fragment 问题,这个问题是可以忽略的吗?也就是眼前的这个场景是不是 OOP 大于 vue 组件约定?
    • 假如严格执行 fragment 约束,看起来解决方案应该回退到 B ,看起来其实使用者到底是切换 card ,还是切换 cardAction 组件,差别是不是也没那么大? B 和 C 之前,也是有”组合>继承“的道理?

    提前感谢大家的意见。

    目前尚无回复
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4436 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 10:02 · PVG 18:02 · LAX 03:02 · JFK 06:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.