代码之家  ›  专栏  ›  技术社区  ›  Max P.

Vue.js模板中的表达式与计算属性

  •  1
  • Max P.  · 技术社区  · 4 年前

    在模板中使用什么更好:表达式还是计算属性?

    前任:

    <span :class="'static_part' + dynamic_part"></span>
    ...
    data: {
        dynamic_part: 'xxx',
    }
    

    <span :class="span_class"></span>
    ...
    data: {
        dynamic_part: 'xxx',
    },
    computed: {
        span_class() {
            return 'static_part' + dynamic_part;
        }
    }
    

    第一种方式更小,更容易理解。但是性能呢?

    1 回复  |  直到 4 年前
        1
  •  2
  •   tony19 thanksd    2 年前

    据官方消息 docs

    模板中的表达式非常方便,但它们用于简单的操作。在模板中加入过多的逻辑会使它们臃肿且难以维护

    我们可以将相同的函数定义为方法,而不是计算属性。对于最终结果,这两种方法确实完全相同。然而,不同之处在于 计算属性根据其反应依赖关系进行缓存

    我看到使用computed属性还可以将逻辑与内容分开,并帮助其他阅读代码的人了解这些属性是基于其他属性计算的