AOP 切面编程是面向对象开发中的一种经典的编程范式,旨在将横切关注点与核心业务逻辑分离来提高代码的模块性和可维护性。如:日志记录、事务管理等就属于横切关注点。在为 H5 提供 Android 原生支持时,曾将插件模块改造为 AOP 模式,实现插件的自动注册。Java 领域的 SpringBoot 就是典型的切面编程引领者。
Vuejs 的开发风格其实是多样的,按 API 可分为:options api 和 composition api,按 UI 开发可分为:template 、jsx/tsx,渲染函数。除此之外 Vuejs 还提供了各种语法糖,就比如说为 setup() 函数提供了 setup 语法糖。
在 Vuejs 开发者中有一小众的人群就习惯使用装饰器风格做开发,也就是 AOP 切面编程模式,主要利用的 ECMAScript 提供了 class 和 仍处在 实验阶段的 decorator,目前 Vuejs 社区不再建议在 Vue 3 中使用基于类的组件,仍想使用类组件推荐使用 vue-facing-decorator。
如果你是从 Java (后端、安卓)转向的 Vuejs 还是 Angular (前端)转向的 Vuejs,对于已经习惯 AOP 切面编程的小伙伴来说,还是可以尝试这种装饰器风格的开发的。对于觉得 “本末倒置的” 的小伙伴我想说:存在即合理。